导航

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进阶

 

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

posted on 2021-05-12 10:26  toughcactus  阅读(49)  评论(0编辑  收藏  举报