如何删除一行并使用单行sed命令追加另一行?

时间:2013-03-26 13:39:33

标签: scripting sed

我知道如何用sed进行删除和替换,但是我在使用append命令时遇到了麻烦。现在,我这样做:

sed -i '' -e '/optima/d' file

这将从文件中删除正确的行(假设它存在)。但是,我还想在文件的末尾添加另一行,我不能在第二行使用“echo something>> file”。我甚至无法使用第二个sed调用。

这样做的语法是什么?

2 个答案:

答案 0 :(得分:2)

这里更好的方法是打印除要删除的行之外的所有行,然后追加最后一行。即使你要删除的行是最后一行,这也是有效的,而Kent的方法对于这种情况不起作用。

sed -i -n -e '/optima/!p' -e '$asomething' file

示例:

$ seq 5 | sed -n -e '/5/!p' -e '$asomething'
1
2
4
something

答案 1 :(得分:0)

  

我还想在文件末尾添加另一行...

试试这个:

sed -i ''  '/optima/d; $a \something' file

示例:

kent$ seq 20|sed '/3/d; $a \yourText'
1
2
4
5
6
7
8
9
10
11
12
14
15
16
17
18
19
20
yourText