正则sed

sed

-p 打印

sed -n '/root/'p 1.txt //打印出包含root的行 把p放在单引号里面也可以

-r :使用正则表达式同时支持 . 和* 和+ 和?和| 和{}等选项的

sed -nr '/o+t/'p 1.txt 需要加 r 选项

sed -n '/o\+/'p 1.txt 不加 r 选项就需要转意

sed -nr '/(oo){2}/'p 1.txt

sed -nr '/root|nologin/'p 1.txt

-n : 打印出指定的行

sed -n '3'p 1.txt -n打印指定的行,其他的不显示。

sed -n '1,3'p 1.txt 打印1至3行

sed -n '1,$'p 1.txt 打印开头至末尾行

-e 有多个需求是使用-e

sed -n -e '1'p -e '/root/'p 1.txt 打印第一行并且匹配root的行

如果同时满足两次需求则打印两次

-I 匹配时不区分大小写

sed -n '/root/'Ip 1.txt p前面加大写的I

-d 删除指定的行

sed '1,20'd 1.txt 删除1-20行 原文件并没有删除 只是打印在屏幕上

sed -i '1,20'd 1.txt 加上 -i 之后删除原文

sed -i '5'd 1.txt 删除第5行

sed '/root/'d 1.txt 删除有root的行

-s 替换

sed '1,5s/root/r/g' 1.txt |head -5 把前五行的 root 替换成 r

加选项 -r 可以支持使用正则表达式的特使符号

sed -r '1,5s/ro+/b/p' 1.txt |head -5

字符中有/ 需要用别的符号代替 如:@ # %

sed 's@/sbin/nologin@111@g' 1.txt 如果替换的字符中有/ 需要用别的符号代替

sed 's/\/sbin\/nologin/111/g' 1.txt 或者把字符中的 / 进行转意

删除字符

head 1.txt |sed 's/[a-zA-Z]//g' 把所有字母删除掉 就是替换成 //空就可以了

在某行前添加指定内容。

head 1.txt | sed -r 's/(.*)/aaa:&/' (。*)表示一个整体 aaa:添加的内容 &表示前面的一个整体

head 1.txt | sed -r 's/(.*)/aaa:\1/' 也可以把&换成1 不过需要转意一下(表示前面的那个整体)

head 1.txt | sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/' //sed命令支持管道符,使用小 括号把要替换的字符打包成一个整体,分成三段再用 /\3:\2:\1/ 调换位置 (数字需要进行转意表示成三个部分)

猜你喜欢

转载自blog.csdn.net/aaahai/article/details/81811143
sed
今日推荐