选项与参数:
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。function:
a :新增行, a 的后面可以是字串,而这些字串会在新的一行出现(目前的下一行)
c :取代行, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
d :删除行,因为是删除,所以 d 后面通常不接任何参数,直接删除地址表示的行;
i :插入行, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
s :替换,可以直接进行替换的工作,通常这个 s 的动作可以搭配正规表示法,例如 1,20s/old/new/g 一般是替换符合条件的字符串而不是整行一般function的前面会有一个地址的限制,例如 [地址]function,表示我们的动作要操作的行。下面我们通过具体的例子直观的看看sed的使用方法。
^ 匹配行开始,如:/^sed/匹配所有以sed开头的行。
$ 匹配行结束,如:/sed$/匹配所有以sed结尾的行。
. 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。
* 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。
[] 匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed。
[^] 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。
(..) 匹配子串,保存匹配的字符,如s/(love)able/1rs,loveable被替换成lovers。
& 保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。
< 匹配单词的开始,如:/<love/匹配包含以love开头的单词的行。
> 匹配单词的结束,如/love>/匹配包含以love结尾的单词的行。
x{m} 重复字符x,m次,如:/0{5}/匹配包含5个0的行。
x{m,} 重复字符x,至少m次,如:/0{5,}/匹配至少有5个0的行。
x{m,n} 重复字符x,至少m次,不多于n次,如:/0{5,10}/匹配5~10个0的行。
sed 's#原字符串#新字符串#g' files 单独使用→将每一行中第一处匹配的字符串进行替换g 每一行进行全部替换→sed指令s的替换标志之一(全局替换)
sed -i 's/原字符串/替换字符串/g' filename ####替换文件中的所有匹配项
sed 's/^/添加的头部&/g' ####在所有行首添加
sed 's/$/&添加的尾部/g' ####在所有行末添加
sed '2s/原字符串/替换字符串/g' ####替换第2行
sed '$s/原字符串/替换字符串/g' ####替换最后一行
sed '2,5s/原字符串/替换字符串/g' ####替换2到5行
sed '2,$s/原字符串/替换字符串/g' ####替换2到最后一行
sed 's/^/添加的头部&/g;s/$/&添加的尾部/g' ####同时执行两个替换规则,中间加分号
[root@ljc ~]# sed -n '/^$/p' 打印空行
[root@ljc ~]# sed '/^$/d' 删除空行,未真正删除,与-i参数一起使用才真正删除内容
[root@ljc ~]# sed '13,$d' 删除第13到末尾的行
[root@ljc ~]# sed -n '1,3p' 取1到3行
[root@ljc ~]# sed -n '/112/p' 取匹配112的行
[root@ljc ~]# sed -n '13,$' 取第13行到末行之间的内容
1到2行删除,并全局将1替换为2
[root@ljc ~]# sed -e '1,2d' -e 's/1/2/g'
[root@ljc ~]# sed -n '1~2p'
[root@ljc ~]# sed -n '2~2p'
在以1开头行的后面插入test
[root@ljc ~]# sed '/^1/atest'
root::0:0:root:/root:/bin/bash
bin::1:1:bin:/bin:/sbin/nologin
1
test
2}
[root@ljc ~]# sed '/^this/ihello world ' file
[root@ljc ~]# sed -i '1itest' t1.txt
本文发布于:2024-02-01 06:43:17,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170674100134638.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |