sed [选项] {指令} 文件
在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
这里列举的只是很基础的一部分,日后有再深入学习再做补充,有任何错误烦请指出。