shell-sed中的编辑命令详解(中)

  • 字符串匹配:

sed -i 's/root/ROOT/' passwd  将文件passwd中,每一行中,匹配的第1个符合条件的字符串替换掉,剩下的不匹配

sed -i 's/root/ROOT/2' passwd 将文件passwd中,每一行中,匹配到的第2个符合条件的字符串替换掉,剩下的不匹配

sed -i 's/root/ROOT/2g' passwd 将文件passwd中,每一行中,只替换从第2个开始到剩下的所有的符合条件的字符串(匹配到的第一个符合条件的字符串不做替换)

sed -i 's/root/ROOT/g' passwad 将文件passwd中,每一行中,符合条件的字符串全部都做匹配换掉(又叫全局搜索匹配替换)

sed -i 's/root/ROOT/ig' passwad 将文件passwd中,root、Root、rooT、ROot 等都替换成ROOT 即忽略大小写,进行全局替换

  • 文件路径匹配:

sed -n '/\/user\/local\//=' passwad 显示文件passwad中 /user/local/ 所在的行号(匹配模式外新增=,表示显示行号)

  • 反向引用:

test1.sh

asas Ansoaan Wan
aaass Ansooon wann
aaas Ansoeen

sed -i 's/Anso..n/&s/g' test1.sh 中间的两点 .. 表示中间任意两个字符,&表示把匹配到的字符串存起来(就理解成存储的变量) s表示在变量后加上s

所以,匹配Anso..n 中间可以是任何字符的字符串 并在匹配的到字符串后加上s

修改后的test1.sh

asas Ansoaans Wan
aaass Ansooons wann
aaas Ansoeens

sed -i 's/\(Anso..ns\)/\1Y/g' test1.sh 也可以使用\1 做反向引用,此时需要将匹配pattern用(),阔起来,且再转义一下

修改后的test1.sh

asas AnsoaansY Wan
aaass AnsooonsY wann
aaas AnsoeensY

猜你喜欢

转载自www.cnblogs.com/ansonwan/p/12190073.html
今日推荐