今天一个哥们偶然跟我说起sed,他们常用sed做删除替换和追加的功能,让我突然很迷茫,一直都是用删除和替换,追加是啥子,后来网上查了一些资料,明白了,在指定行添加内容,使用/a或者/i,具体例子:
sed '/2/i\add a new line' -i install.log
在第二行前添加一行信息命令如上,
sed '/3/a\add a new line' -i install.log
在第三行后面添加一行命令如上。
额,跑题了,哈哈。其实困扰我的不是这个添加的问题,是删除的问题,使用sed删除指定行,是一件很简单的事情,一般会删除一些连续的行,我今天突然想到要是我要删除不连续的行该怎么写呢?
sed删除连续的行可以如下写:
sed '1,3'd -i install.log
这是删除1到3行,如果我要删除第一行和第三行呢?
这个问题纠结很久,哈哈,sed太强大了,还要多多学习啊,基础太薄弱了,经过网上查找和网友总结,写法如下:
sed -i -e '1'd -e '3'd install.log
这是我自己写的,还有一个网友的答案更简洁,如下:
sed -i -e '1d;3d' install.log