2013-03-26 44 views
0

我知道如何使用sed進行刪除和替換,但我在使用append命令時遇到了問題。現在,我正在這樣做:你怎麼能刪除一行,並附加一個單行sed命令?

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

這將從文件中刪除正確的行(假設它存在)。但是,我還想在文件的末尾添加另一行,並且不能在第二行使用「echo something >> file」。我甚至不能使用第二個sed調用。

這樣做的語法是什麼?

+0

另外值得一對看sed的答案:http://superuser.com/q/590630/26006 – haridsv 2016-11-16 12:11:29

回答

0

I'd also like to add another line to the end of the file...

試試這個:

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 
+0

當我嘗試這句話,我得到以下錯誤: ** sed:1:「/ optima/d; $ a \ something **和第二行**」:在命令**結尾處的\之後的多餘字符。 – 2013-03-26 13:52:42

+0

是否引用了整個sed操作? sed''....''? – Kent 2013-03-26 13:57:01

+0

是的,用單引號。我甚至小心地有正確的空格。如果這很重要,它在OS X w/bash上,但我無法想象他們搞砸了sed實現。 – 2013-03-26 14:04:00

2

這裏更好的方法是打印所有,但要刪除,然後追加的最後一行行。即使您正在移除的行是最後一行,但這種方法仍然有效,而Kent的方法對於這種情況不起作用。

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

例子:

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