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脚本学习替换的主要内容,如果未能解决你的问题,请参考以下文章