Sed 全称是:Stream EDitor,是一项Linux指令,功能同awk类似,差别在于,sed简单,对列处理的功能要差一些,awk的功能复杂,对列处理的功能比较强大。
调用sed命令有两种形式:
Sed常见命令参数
sed正则表达式
\ 不转义,即元字符照常打印
^ 以字符串开头,如/^My/以My开头的行
$ 以字符串结尾,如/My$/以My结尾的行
. 匹配一字符,如/M..y/M和y间有俩字符
* 匹配0个或多个前面的字符
[] 匹配里面的单字符,如/[Mh]y/匹配My和hy
[^] 匹配不在里面的字符
如/[^Mh]y/匹配不是My和hy
保存已经匹配的字符,用\n来呼出
如1,20s/self/\1r/用\1呼出you,最多保存9个,从左边开始标记
& 保存查找串,如s/My/you&you/,&表示My
\< 词首定位符,和^类似,如/\<My/
\> 词尾定位符,和$类似,如/My\>/
x\{m\} 连续m个x,如/a\{5\}/查找连续5个a
x\{m,\} 至少m个x,如/a\{5,\}/至少5个a
x\{m,n\} 至少m个x,最多n个x
\w 匹配每个字母和数字
\w\+ 匹配每一个单词
\s 匹配每个空格
\x\+ x表示一个字符or一个单词,当匹配到一个或者多个时操作
sed 's@root@toor@g' /tmp/passwd 匹配分隔符可以自定, / @ 均可
==>sed 'sroottoorg' /tmp/passwd 与上同
s==search 查找
g==global 全局替换
-i: implace 直接写入文件(慎用)
sed -i 's@root@toor@g' /tmp/passwd 将 /tmp/passwd 文件中的 root 替换为 toor,并写入文件
sed -r 's@[0-9]+@ @g' /tmp/passwd -r 使用扩展正则表达式,不需要转义,将 /tmp/passwd 中的数字都替换为 空格
sed -ri.bak 's@[0-9]+@ @g' /tmp/passwd i.bak 为写入文件时自动备份文件为 :[文件名].bak
sed '2a test' /tmp/passwd 在 /tmp/passwd 中的第2行的下面添加一行
sed '2i test' /tmp/passwd 在 /tmp/passwd 中的第2行的上面添加一行
添加多行 使用 \n 换行符
sed '2i test\nzhangsan' /tmp/passwd
在不同的行添加内容
sed -e '2i test' -e '5a zhangsan' /tmp/passwd
在第2行的前面和第5行的后面各添加一条信息
删除行
sed '2d' /tmp/passwd 删除第2行
sed '2,4d' /tmp/passwd 删除2~4行
sed -e{2,4,8}d /tmp/passwd 删除不连续的行,注意这里没有分号 ' '
sed -nr '/root|nologin/!p' /tmp/passwd 删除包含 root 和 nologin 的行,!为取反
sed '/toor/ w /tmp/test.txt' /tmp/passwd w 将匹配到的内容,写入一个文件 加 -n 为静默模式
find /tmp -name test.txt | xargs sed 's@gf@root@g' 和 find 命令结合使用
使用 Sed 获取本机的 IP 地址
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!