sed [-hnV][-e<script>][-f<script文件>][文本文件]
动作说明
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
参数
-e 可以执行多个命令,每个-e执行一个命令(sed -e '2d' -e '2a xxx' test)
-f 执行命令文件 (sed -f aa test)
-n 取消默认的控制台输出,如果执行p的话可以防止重复打印
-i 将修改内容输出到原文件,即直接修改原文件
举例
新增(下一行插入)
sed '2a testContent' test.txt 在第2行后面插入一行内容为testContent
sed '1,3a testContent' test.txt 在第1-3行的每行后面都插入一行
插入(前一行插入)
sed '2i testContent' test1 在第2行前面插入一行内容为testContent
sed '1,3i testContent' test1 在第1-3行的每行前面都插入一行
替换整行
sed '2c testContent' test1 将第2行替换为testContent
替换部分字符串
sed 's/old/new/' test1 将所有行的第一个old替换成new
sed 's/old/new/gi' test1 将所有行的所有old替换成new并忽略大小写
删除
sed '2d' test1 将第2行删除
打印
sed -n '2p' test1 打印第2行
sed -n '/linux/p' test1 打印匹配到linux字符串的行
sed -n '/linux/!p' test1 打印所有未匹配到linux的行
执行多个命令
sed -e 's/old/new/g' -e '2d'