sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作
sed用法
sed [-nefri] "定位符指令" 文件名
常用选项:
-n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e∶直接在指令列模式上进行 sed 的动作编辑(可同时执行多个操作);
-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
-r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
-i∶直接修改读取的档案内容,而不是由萤幕输出。
常用命令:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g
w :将文件内容导入到其他文件
r:将其他文件的内容导入
案例
1.删除
sed '1d' passwd #删除第一行
sed '1,2d' passwd #删除前二行
sed '$d' passwd #删除最后一行
sed '2,$d' passed #删除第二行到最后一行
2.显示某行
sed -n '1p' /etc/passwd #查看第一行并打印
sed -n '2,$p' /etc/passwd #查看第二行到最后一行
sed -n '$=' /etc/passwd #总共多少行内容
sed -n '/^root/=' /etc/passwd #以root开头的行位于第几行
sed -n '1~2p' /etc/passwd #打印奇数行
sed -n '2~2p' /etc/passwd #打印偶数行
sed -n '2,+3p' /etc/passwd #打印第二行以及其后3行
3.插入
sed '1a fuck you' /etc/passwd #第一行后插入fuck you
sed '1,3a hello' /etc/passwd #第一行到第三行后加hello
sed '1,3i shit' /etc/passwd #第一行到第三行前插入shit
sed '1~2i sb' /etc/passwd #奇数行前插入sb
4.替换
sed '1c son of bitch' /etc/passwd #第一行替换成son of bitch
sed '1,3s/hello/faker/' /etc/passwd #第一行到第三行中的第一个hello替换成faker
sed '1,3s/hello/faker/g' /etc/passwd第一行到第三行所有的hello替换成faker
sed 's/hello/faker/g' /etc/passwd有的hello替换成faker
sed -ri '3,9s/(.*)/#\1/g' passwd # 正则表达式3,9行注释 主要是由特殊字符1不用-r语法错误
5.read 将其他文件的内容导入
sed '2r /etc/hosts' /etc/passwd #将/etc/hosts 读取到passwd 第二行下面
sed 'r /etc/hosts' /etc/passwd #将/etc/hosts 读取到passwd每一行下面
sed '/root/r 1.txt' /etc/passwd #查找/etc/passwd 含有root的行,然后每行导入1.txt
6.write 将文件内容导出另存到其他文件
sed 'w 1.txt' /etc/passwd #将/etc/passwd 内容导入到1.txt
sed '/127.0.0.1/w 1.txt' /etc/hosts #将/etc/hosts 含有127.0.0.1的行导入到1.txt
sed '2,3w 1.txt' /etc/passwd #将 /etc/passwd第二行到第三行导入到1.txt
本文详细介绍了sed命令的基本用法及各种应用场景,包括删除、显示、插入、替换行或内容等操作,并提供了丰富的实例。
462

被折叠的 条评论
为什么被折叠?



