sed学习 2

Posted

tags:

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

场景:配置文件一项配置一行,现在通过脚本,使得指定配置项的内容做修改

我觉得应该是清除当前的指定配置项,使用模式匹配

sed \'/config name/d\' data.txt

在最后一行的下一行写入包含配置项的文件

sed \'$r configAdd\' data.txt

 

----------------------------------

在最后一行的下一行添加数据

sed \'$a\\alright\' data.txt

 

---------------------------

sed 替换命令,对行做处理

#仅对第二行作替换
$ sed \'2s/dog/cat/\' data1.txt 

#对2-3行作替换,是一个区间
$ sed \'2,3s/dog/cat/\' data1.txt

#对除第一行外的所有行做替换
$ sed \'2,$s/dog/cat/\' data1.txt 

 

--------------------------------

sed options script file

  • sed options -n:不产生命令输出,使用print命令来完成输出
  • sed script s,格式如下
\'s/A/B/\'

  所有行里,匹配A,替换为B,仅限每行第一个A

    • 替换标记
s/A/B/flags
s/A/B/g #每行不限次数

  

# cat ttt
hello
world
dog
grey

# sed \'s/og/oor/\' ttt
hello
world
door
grey

#标记p其实是将替换了的行,替换后的内容打印出来,和-n连用很明显
#如果不和-n连用,就是替换了的行,替换后的内容打印两次
# sed \'s/og/oor/p\' ttt
hello
world
door
door
grey

# sed -n \'s/og/oor/p\' ttt
door

-----------------------------------

正则表达式

  • 点号:必须匹配一个字符
$ cat data6 

1>This is a test of a line. 
2>The cat is sleeping. 
3>That is a very nice hat. 
4>This test is at line four. 
5>at ten o\'clock we\'ll go home. 

$ sed -n \'/.at/p\' data6 

2>The cat is sleeping. 
3>That is a very nice hat. 
4>This test is at line four. 

显然,1>中无at,5>中,at前无字符

  • 星号:跟在某个字符后面,表明该字符出现0次或多次
  • 点号和星号连用:基本就是匹配所有了
# cat data
hello
world
dog
grey

# sed -n \'/.*/p\' data
hello
world
dog
grey

t# sed -n \'/l.*/p\' data
hello
world

 

 

 

 

 

 

------------------------

 

之前有一回学习sed,但是没做笔记,大头啊

那天学习的是Linux命令行与shell脚本编程大全 ,看全明星比赛去了

主要是

第19章 初识sed和gawk

第21章 sed进阶

第22章 gawk进阶

 

总结之后再弄吧,今天先做修改配置项

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