Sed工具常用用法总结

xiaoxiao2021-02-28  92

Sed工具常用用法总结

Sed是一种好用的流编辑工具,在文本里进行替换、删除、编辑操作十分方便。学完了Sed的一些常用操作,下面总结一下,方便日后翻阅。


sed [选项] {指令} 文件

选项:
-n 加入这个可以使sed命令执行后屏蔽改后内容的输出 -i 将执行完的指令写入文件,不然执行完文件内容不做改变 -e 同时执行多个指令,指令间用;分隔 -p 打印,和-n配合可以输出指定行
动作:
-a 在指定位置后面追加一行 -i 在指定位置前面追加一行 -c 替换指定位置的行 -d 删除指定行 -s 替换字符 -y 按字符替换
下面举几个例子

在test.sh文件第三行后追加行 abcde:sed ‘3a abcde’ test.sh

在test.sh文件第三行前追加行 abcde:sed '3i abcde' test.sh

在test.sh文件中把所有的a字符换成b字符sed 's/a/b/g' test.sh 此时g表示全局替换,如果是用具体的数字,比如2,则替换第二个

在test.sh文件中把1到5行删除,注意这里,是表示一个区间:sed '1,5/d' test.sh

上面讲到的行号都是给出来的,然而有时候当文本行数太多,并不能确定行号,此时我们可以用正则表达式来定位到目标行。如找到tesh.sh文件里包含abc的行,并在前面添加一行def

sed '/abc/i def' test.sh

此时有个特例,如果正则表达式//之间没有任何字符,则表示匹配最近一次正则表达式的内容,如找到包含abc这行,把行里第二个abc换成cba,如 sed '/abc/s//cba/2'

找到以abc结尾的行,并在其后面添加一行def sed '/abc$/a def' test.sh

从第一行开始,把奇数行全部删除sed '1~2/d' test.sh,这里1~2的意思是说,从第一行开始,每两行进行一次操作

替换命令:把test.sh文件里a1、a2等an变成(an) sed '/a[0-9]/s//\(&\)/g' 注意这里()都是转义字符,要用\(和\)表示

这么一条一条写固然方便,但是如果是比较长的脚本,则可以把批量指令写成脚本,再统一对该文件执行脚本。比如把指令写在a.sh文件,对abc.txt文件执行操作。可以用 sed -f a.sh abc.txt 对文件执行操作 。此时脚本文件a.sh里不需要写sed。如

[root@localhost ~]#cat a.sh /.*/{ /^$/d #删除全部空白行 s/a/b/g #把a全部换成b }

10.依次替换命令:把test.sh文件里abc分别换成ABC sed 'y/abc/ABC/' test.sh


这里列举的只是很基础的一部分,日后有再深入学习再做补充,有任何错误烦请指出。

转载请注明原文地址: https://www.6miu.com/read-43117.html

最新回复(0)