Linux系统中sed命令在⽂件某⾏前后添加内容的⽤法linux的sed⼯具是⼗分强⼤的,能很容易的实现在某关键词的前⼀⾏或后⼀⾏增加内容。今天在批量修改tomcat的⽇志时就⽤到了该功能。
⼀、在某⾏的前⼀⾏或后⼀⾏添加内容
具休操作如下:
复制代码
代码如下:
#匹配⾏前加
sed -i '/ingwang' f.file
#匹配⾏前后
sed -i '/ingwang' f.file
⽽在书写的时候为便与区分,往往会在i和a前⾯加⼀个反加⼀个反斜扛。代码就变成了:
复制代码
代码如下:
sed -i '/2222222222/a\3333333333'
sed -i '/2222222222/i\3333333333'
这就就可以很⽅便的看出要在某⼀⾏前或某⼀⾏后加⼊什么内容。不过经常我记不住a 、i 那个是前那个是后。我的记法是a = after ,i = in front 。这样就知道 i 是前,a 是后了。不过官⽅的man⽂件⾥不是这样解释的,man⽂件⾥是这样解释的:
复制代码
代码如下:
a \
text Append text, which has each embedded newline preceded by a backslash.
i \
text Insert text, which has each embedded newline preceded by a backslash.
⽽且其可以配合find查的内容处理,如下:
复制代码
代码如下:
find . -l|xargs sed -i '/directory/i <!--'
find . -l|xargs sed -i '/pattern="%h/a -->'
⼆、在某⾏(指具体⾏号)前或后加⼀⾏内容
复制代码vim命令是什么
代码如下:
sed -i 'N;4a\ddpdf' a.txt
sed -i 'N;4i\eepdf' a.txt
这⾥指定的⾏号是第四⾏。
三、删除指定⾏的上⼀⾏或下⼀⾏
#删除指定⽂件的上⼀⾏
复制代码
代码如下:
sed -i -e :a -e '$!N;s/.*n(.*directory)/1/;ta' -e 'P;D' l
#删除指定⽂件的下⼀⾏
sed -i '/pattern="%/{n;d}' l
这个写起来有点长,⼀般如果不是shell⾥的需要,我更喜欢⽤vim去处理。另外需要注意的是,在vim⾥如果替换的内容⾥tab 这样的符号是需要在编辑模式下分别按ctrl+v 和crtl+I ,⽽不是不停的⼏个空格。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。