linux中sed指令的使用

2023-11-15

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

声明

原文引用自鸟哥私房菜。

sed指令是对行来进行处理,结合正则表达式在文件内容处理方面可以发挥强大的作用。

参数详解

[root@linux ~]# sed [-nefr] [动作]
参数: 
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 
 的数据一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过 
 sed 特殊处理的那一行(或者动作)才会被列出来。 
-e :直接在指令列模式上进行 sed 的动作编辑; 
-f :直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的 
 sed 动作; 
-r :sed 的动作支持的是延伸型正规表示法的语法。(预设是基础正规表示法语法) 

动作说明: [n1[,n2]]function 
n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作 
 是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』 

function 有底下这些: 
a :新增, a 的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行)~ 
c :取代, c 的后面可以接字符串,这些字符串可以取代 n1,n2 之间的行! 
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚; 
i :插入, i 的后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行); 
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运作~ 
s :取代,可以直接进行取代的工作!通常这个 s 的动作可以搭配正则表达式!例如 1,20s/old/new/g 就是啦! 
 
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

参数d,以行为单位,删除功能

删除2~5行,中,2,5,行包括在内

[root@localhost ~]# nl /etc/passwd | sed '2,5d'
上面的指令完整的写法是要加参数e的,但是由于只需要执行一条指令,所以可以省略,但是如果是有多条指令,每条指令都需要加上-e参数(下面的指令都省略了-e参数)
[root@localhost ~]# nl /etc/passwd | sed -e '2,5d'
[root@localhost ~]# nl /etc/passwd | sed -e '2,5d' -e '8,10d'
 
 
 
 
  • 1
  • 2
  • 3
  • 4

删除第2行

[root@localhost ~]# nl /etc/passwd | sed '2d'
 
 
 
 
  • 1

删除3到最后一行

[root@localhost ~]# nl /etc/passwd | sed '3,$d'
 
 
 
 
  • 1

注意:sed后面接动作,务必用单引号括住

参数a i 新增内容

在第二行后新增内容

[root@localhost ~]# nl /etc/passwd | sed '2a drink tea'
 
 
 
 
  • 1

在第二行前,新增内容

[root@localhost ~]# nl /etc/passwd | sed '2i drink tea'
 
 
 
 
  • 1

新增多行内容,主要要是用到\或者回车(新增的内容使用单引号,如果要想使用回车来实现新增多行,注意另外一个单引号别写出来,否则就直接执行指令了)来新增多行内容

[root@localhost ~]# nl /etc/passwd | sed '2a drink tea ....\
drink bear?'

 
 
 
 
  • 1
  • 2
  • 3

以行为单位替换c和显示p

替换2到5行

[root@localhost ~]# nl /etc/passwd | sed '2,5c 2-5 no data'
 
 
 
 
  • 1

显示10~20行

[root@localhost ~]# nl /etc/passwd | head -n 20 | tail -n 10
也可以使用
[root@localhost ~]# nl /etc/passwd | sed -n '11,20p'
 
 
 
 
  • 1
  • 2
  • 3

记得要加上-n变成silent模式,只输出经过sed特殊处理的。否则会有重复输出。

参数s 查找和替换

sed ‘s/要被替换的字符串/新的字符串/g’

[root@localhost ~]# /sbin/ifconfig ens160
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 912.168.1.1  netmask 255.255.255.0  broadcast 912.168.1.255
[root@localhost ~]# /sbin/ifconfig ens160 | grep 'inet '
        inet 912.168.1.1  netmask 255.255.255.0  broadcast 912.168.1..255
[root@localhost ~]# /sbin/ifconfig ens160 | grep 'inet ' | sed 's/^.*addr//g'
        inet 912.168.1.1  netmask 255.255.255.0  broadcast 912.168.1.255
 
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

将ip前面的部分删除

[root@localhost ~]# /sbin/ifconfig ens160 | grep 'inet ' | sed 's/^.*inet//g'
 912.168.1.1  netmask 255.255.255.0  broadcast 912.168.1.255
 
 
 
 
  • 1
  • 2

删除ip后面的

[root@localhost ~]# /sbin/ifconfig ens160 | grep 'inet ' | sed 's/^.*inet//g' | sed 's/netmask.*$//g'
 
 
 
 
  • 1

去除注释行

[root@localhost ~]# cat /etc/man_db.conf | grep 'MAN' | sed 's/#.*$//g'
 
 
 
 
  • 1

注释行变成了空格,将空格删除

[root@localhost ~]# cat /etc/man_db.conf | grep 'MAN' | sed 's/#.*$//g' | sed '/^$/d'
 
 
 
 
  • 1

使用sed直接修改文件

将所有.修改成!

[root@localhost tmp]# sed -i 's/\./\!/g' regular_express.txt
 
 
 
 
  • 1

在最末尾添加# this is a test一行注释。

[root@localhost tmp]# sed -i '$a # this is a test' regular_express.txt
 
 
 
 
  • 1
            <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e9f16cbbc2.css" rel="stylesheet">
                </div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux中sed指令的使用 的相关文章

  • python装饰器--原来如此简单

    python装饰器 原来如此简单 今天整理装饰器 内嵌的装饰器 让装饰器带参数等多种形式 非常复杂 让人头疼不已 但是突然间发现了装饰器的奥秘 原来如此简单 第一步 从最简单的例子开始 coding gbk 示例1 使用语法糖 来装饰函数
  • Python3安装包下载(附3.8.7、3.7.9、3.6.8版本)

    三部曲 1 到 源码 网站源码 源码下载 源码之家 站长下载 搜索 Python 并下载 搜索结果在较底部 2 到官网 https www python org downloads 对应版本的页面 如 https www python or
  • Linux实现使用定时任务执行php程序(以及定时任务url带参数)

    php程序已经写好了 位置 data html XXX redis to mysql php php安装位置为 app bin php 查找php安装位置使用 whereis php which php php v which 这条命令主要
  • 1.C#/.NET开发环境安装(Windows)

    文章目录 一 VS2022 1 下载 VS 2022 Community 2 安装 3 第一个VS项目Hello World 4 补充 二 VS2019 1 下载VS 2019 Community 2 安装 三 游戏开发引擎Unity 四
  • centos 安装mysql 5.7

    centos安装mysql 1 检查系统中是否已安装 MySQL 如果已安装 请参考此文章卸载 rpm qa grep mysql 在新版本的CentOS7中 默认的数据库已更新为了Mariadb 而非 MySQL 所以执行 yum ins
  • 转:车规芯片的AEC-Q100测试标准

    距离上一次发文章已经过去了10个月了 这10个月里 不想错过跟小孩待在一起的每一个时刻 额呸 就是因为懒 一直没有更新文章 特此最近开始逼迫自己不断的学习 重新开始进行公众号的更新 最近这小半年一直在弄跟芯片相关的一些工作 并且由于缺芯的原
  • 【华为OD机试】水仙花数Ⅰ【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 所谓水仙花数 是指一个n位的正整数 其各位数字的n次方和等于该数本身 例如153是水仙花数 153是一个3位数 并且153 1 3 5 3 3 3 输入描述 第一行输
  • ScrumAlliance对Agile Coach的能力定义了五个部分

    1 Assess Discovery Diretion 评估 发现 指导 评估团队 发现问题 提出指导意见 2 Balance Coaching Consulting 平衡教练和咨询的工作 提供咨询方案 也提供教练的工作 3 Catalyz
  • 2022全国职业技能大赛-网络安全赛题解析总结①(超详细)

    2022全国职业技能大赛 网络安全赛题解析总结 自己得思路 模块A 基础设施设置与安全加固 20分 模块B 网络安全事件响应 数字取证调查和应用安全 40分 模块C CTF夺旗 攻击 20分 模块D CTF夺旗 防御 20分 有什么不懂得可
  • (libevent) 基础demo

    文章目录 介绍 Code 并发服务器 signal fifo END P S 简单客户端代码 介绍 官网 libevent linux中下载 apt get install libevent dev 官网的简介 The libevent A

随机推荐

  • JAVA多线程-锁机制

    一 synchronized 在多线程并发编程中 synchronized 一直是元老级角色 很多人都会称呼它为重量级锁 但是 随着 Java SE 1 6 对synchronized 进行了各种优化之后 有些情况下它就并不那么重 sync
  • 深度学习------用NN、CNN、RNN神经网络实现mnist数据集处理

    1 用NN神经网络完成MNIST数据集处理 用NN神经网络完成MNIST数据集处理 1 导包 import tensorflow as tf import numpy as np import matplotlib pyplot as pl
  • sqlalchemy.exc.ResourceClosedError: This result object does not return rows.

    向数据库插入数据时 报错对象没有返回 已被自动关闭 参考 http t csdn cn Ry6zS 把SQLAlchemy版本换成1 3解决
  • 数据库断连后如何重新获得数据库连接

    前提 DBPool连接池自身有数据库断连后获取重连的机制 问题 执行某条sql时连接断开 此时此条sql不会被执行 并且若不进行特殊处理 程序会继续往下执行 此时会出现数据丢失现象 解决思路 1 判断是否是因为连接被断开引起的异常 2 若是
  • 小程序的开发之使用SVG

    昨天突然提出要在小程序中使用SVG 因为我们的小程序项目是有主题色的 不同的主题色时有些图片一直是固定的 显的有些格格不入 所以打算使用SVG来实现根据主题色的颜色进行变化 什么是SVG SVG是 Scalable Vector Graph
  • JS setInterval()/setTimeout()——实现动态时间,倒计时

    一 动态时间 1 setInterval 实现 html部分 div div
  • Design Compiler (十)——其他的时序约束选项(一)

    之前讲了基本的时序路径约束 现在我们来看一下其他的约束 然后通过实战来讲解一些其他的约束 实战中也没有前面的 理论 中的约束类型 但是可以通过实战来了解其他的约束 本文的具体内容是 多时钟同步约束 门控时钟的约束 实战 正负边沿触发器的约束
  • 突破人生的瓶颈(心灵之灯)

    人生 四度 平时除了看新闻外我很少看电视 但是那天除外 那天晚上写完稿子 随意打开了一个频道 是央视三套的艺术人生 为何庆魁加油 我不喜欢主持人以煽情的方式 不停发掘主人公内心伤痛泪水的惯用风格 本想换台 考虑到剧作家何庆魁今年来家庭遇到的
  • 微服务架构跨库分页解决的四种方案

    微服务架构是一项在云中部署应用和服务的新技术 大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务 而红帽说API应该是重点 微服务可以在 自己的程序 中运行 并通过 轻量级设备与HTTP型API进行沟通 关键在于该服务可以在
  • HTTP请求的8种请求方式以及常见的HTTP状态码总结

    完整的HTTP状态码见 菜鸟教程 HTTP8种请求方式的原文 HTTP的8种请求方式的简单介绍 目录 一 HTTP请求的8种请求方式 二 什么是HTTP状态码 三 HTTP状态码的分类 一 HTTP请求的8种请求方式 序号 方法 描述 1
  • python批量检索文献_导师每天都让查文献,如何才能快速查找文献呢?

    最近在后台有很多朋友留言 导师每天都让我查文献 但现在网上收录的文献这么多 每次都要花好长的时间 我该怎么办 作为研究人员 大家很多时候对于文献检索 数据分析等问题都感到很崩溃 如果采用常规的人工搜索 软件整理 往往要花费大量的时间 明明是
  • 自定义vue组件--实现多图片上传

    一 引入 文件上传在日常的开发中是一项基本的操作 在前端中得以广泛的使用 因此将其封装成一个组件显得极为重要 本文主要是基于vue实现的自定义多图片上传组件 二 自定义vue上传组件 MultiUpload组件的封装
  • 查询Oracle当前用户下,所有数据表的总条数

    1 需求 查询Oracle当前用户下 所有数据表的总条数 2 方法 方法1 存储过程 文末有方法2 一个SQL也可轻松搞定 3 操作 方法1 存储过程 3 1 新建 右键点击Procedures 点击New 点击OK 把存储过程写进去 然后
  • 哲理故事300篇

    哲理故事300篇 1 一只火鸡和一头牛闲聊 火鸡说 我希望能飞到树顶 可我没有勇气 牛说 为什么不吃一点我的牛粪呢 他们很有营养 火鸡吃了一点牛粪 发现它确实给了它足够的力量飞到第一根树枝 第二天 火鸡又吃了更多的牛粪 飞到第二根树枝 两个
  • 2022短视频去水印小程序源码+支持批量解析

    简介 2022最新短视频去水印 外卖CPS系统微信小程序源码下载 本微信小程序含流量主支持 激励视频 插屏AD 视频AD 本小程序源码非微擎内核 且支持会员系统 支持短视频秒速级解析 批量短视频解析 图集解析 各个页面轮播图均支持后台替换
  • 测开面经总结的经常考察的知识点

    一 算法相关 1 熟悉常见的排序算法 冒泡排序 插入排序 选择排序 归并排序 堆排序 快排 希尔排序 二 计算机网络相关 1 http协议 http 超文本传输协议 是一个在客户端和服务器端之间基于请求与响应模式的 无状态的 应用层的协议
  • Spring中的定时器(定时执行任务)

    import org apache log4j Logger import org springframework beans factory annotation Autowired import org springframework
  • 【环境配置】Jupyter Notebook切换虚拟conda环境(Kernel)

    jupyter Notebook切换虚拟conda环境Kernel 0 Jupyter notebook 配置默认路径 添加子环境kernel 允许jupyter外部链接 一 jupyter notebook常见报错 anaconda自带的
  • Java代码审计,高手就是这样“硬看”的

    前言 本文作者是360特邀讲师 每月开讲一堂代码审计课 曾在2017年中国互联网安全大会上作为白帽大咖的嘉宾身份参加并在沙龙上担当讲师 在补天众测平台上 他有一个响当当的ID jkgh006 接下来我们来看看高手是如何通过 硬看 来进行代码
  • linux中sed指令的使用

    版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 https blog csdn net u012062455 article details 79309331 声明 参数详解