shell脚本学习替换

Posted mayplestory

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本学习替换相关的知识,希望对你有一定的参考价值。

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

 

 技术图片

 

以上是关于shell脚本学习替换的主要内容,如果未能解决你的问题,请参考以下文章

跟着360架构师 学习Shell脚本编程 完整版

SHELL脚本攻略(学习笔记)--2.5 tr

[Linux Shell学习系列十四]sed和awk-6.awk与Shell

linux shell脚本学习

Shell脚本(学习笔记1)

shell脚本学习总结