sed 是一个很强大的文本编辑器。 可以对来自文本, 以及标准输入的文本进行编辑,sed会从文件或者标准输入中读取一行,将其复制到缓冲区,对文本编辑完成之后,读取下一行直到所有的文本行都编辑完毕。但是sed选项有特别的多,并且有特别多的处理方式,理解起来比较困哪,所以接下来我们直接通过一些实际操作来理解sed命令
命令格式格式:sed [option] 'command' 文本文件
选项:
-i:表示inplace-edit,就地修改文件。
-h:显示帮助信息
命令:
动作a :新增,a的后面可以接字串,这些字串会在新的一行出现(目前的下一行)。动作d :删除,d后通常不接任何内容。
动作s :替换,默认替换每行中出现的第一处内容。
案例1 sed -i '2a\ujiuye' /tmp/file.txt
#在这个文件第二行直接写入ujiuye,不用打开文件编辑 -i 能够直接修改文件
案例2 sed -i '1i\hello-World' /tmp/file.txt
#在第一行插入helloWo 后面的i表示首行,如果不写1,则表示在所有行前面添加
案例3 sed 'i1\test' /tmp/file.txt
#数字和后面的i位置不能改变,在每一行前面插入相应的内容,\t识别成了tab键,形成了空格
案例4 sed '$a\hello-world' /tmp/file.txt
#在最后一行的下一行插入内容
案例5 sed 's/旧串/新串/' /tmp/file.txt
#将文件中的就字符串替换为新字符串,默认替换第一个
案例6 sed 's/旧串/新串/g' /tmp/file.txt
#将文件中的就字符串全部替换为新字符串,后面的g是global的意思 ,s前面也可以加具体的数据,表示具体的行
案例7 sed 'nd' /tmp/file.txt
#删除文件中的内容,n表示数字,可写可不写,表示删除第几行
案例8 sed -n '3p' /tmp/file.txt
#p表示打印, 打印第三行内容 前面的选项n表示特殊处理某一行
案例9 sed -n '100,200p' /tmp/file.txt
#打印这个文件的100行到200行
案例10 sed '/My/,/You/d' /tmp/file.txt
删除包含"My"的行到包含"You"的行之间的行
案例11 sed '/My/,10d' /tmp/file.txt
#删除包含"My"的行到第十行的内容
案例12 sed '/my/d' datafile
#删除包含my的行,其余的都被显示
案例13 sed -i 's/ujiuye/helloWorld&/' /tmp/file.txt
#在所有ujiuye前面插入helloworld
案例14 sed -i 's/ujiuye/&helloWorld/' /tmp/file.txt
#在所有ujiuye后面插入helloWorld
案例15 sed –i ‘s/^/ HEAD&/’ /tmp/file.txt
#在每行的头添加字符,比如“HEAD”
案例16 sed -I ‘s/$/&tail/’ /tmp/file.txt
#在每行的尾部添加字符,比如“tail”
案例17 sed -i ‘/^$/d;s/111/aaa&/;s/111/&bb’ /tmp/file.txt
#删除所有空格并在指定位置插入相关内容 “^” 代表行首 “$” 代表行尾
案例18 sed -n '1,20s/My$/You/gp' datafile
#取消默认输出,处理1到20行里匹配以My结尾的行,把行内所有的My替换为You,并打印到屏幕上。
#编辑多个文件
案例17 sed -i 's/ujiuye/&helloWorld/' *.txt
在所有的*.txt文档的ujiuye后面插入helloWorld