您的位置:首页 > 博客中心 > 网络系统 >

shell脚本学习(3)替换

时间:2022-04-03 15:27

1 sed 替换  

1格式:

  ‘s/原字符串/新字符串/‘   输入源    

2正确参考:

sed ’s/as/AS/‘ do.txt 

  改变字符串as为AS,不会改输入源的文件。

  匹配每行第一次匹配的位置。

 sed ’s/as/AS/‘ do.txt

技术图片

 技术图片

 

         指定匹配每行第二个被匹配的数据, 用/n来指定匹配第几个

 sed ’s/as/AS/2‘ do.txt

技术图片

 每行的第二个as变成了AS

 

         配合g命令,全部匹配, 设置文件中所有匹配的位置,修改完全部的as都被替换成AS了

 技术图片

 

3 错误参考:

注意尾部有/  , 试了一个上午一直没成功, 原来是少了/

yuyuyu@ubuntu:~$sed ’s/as/AS‘ do.txt
sed: -e expression #1, char 10: unterminated `s‘ command

5 界定符, 一般是用/  ,但也可以用 ; : , 分号,冒号, 逗号等

比如像把留着当目录, 符号用, 可以在‘s;;;’   s/改成s;

技术图片

sed ‘s;0x50;0x60;‘ do.txt

技术图片

 

6 配合区域保存, \(\)

输入一个目录, 然后用区域存储,以及引用 \1 修改这个目录的子目录

yuyuyu@ubuntu:~$ 

echo /home/yuyuyu/ | sed ‘s;\(/home\)/yuyuyu/;\1/zhangzhang/;‘

技术图片

 

7 sed -e命令, 执行多次匹配。

yuyuyu@ubuntu:~$ sed ‘s/as/AS/2‘ do.txt
技术图片

 

8 sed -f命令, 把编辑命令放到文本里读出来执行,批量处理sed的编辑命令

创建一个test_sed文本

yuyuyu@ubuntu:~$ cat test_sed 
s/as/AS/2
s/df/DF/

 使用读取sed脚本命令:

yuyuyu@ubuntu:~$ sed -f test_sed do.txt 

脚本想要替换as  和df , 结果显示都替换成功了。

技术图片

 

9 sed -n命令,关闭修改结果, 只打印 带p的行

测试了下, -n命令, 结果什么都没输出到result.txt

 sed -n ‘s/as/AS/2‘ <do.txt > result.txt

 

如果在 尾部加入p就能够打印被修改的行了

yuyuyu@ubuntu:~$ sed -n ‘s/as/AS/2p‘ <do.txt > result.txt

技术图片

技术图片

 

 10 sed 的指定行的用法

sed 只对含有特定行的位置操作

sed ‘/fd/ s/as/AS/‘ <do.txt

 技术图片

 

 

sed 只对不含有特定行的位置操作

sed ‘/fd/ !s/as/AS/‘ <do.txt

 

 技术图片

 

本类排行

今日推荐

热门手游