我知道如何使用sed進行刪除和替換,但我在使用append命令時遇到了問題。現在,我正在這樣做:你怎麼能刪除一行,並附加一個單行sed命令?
sed -i '' -e '/optima/d' file
這將從文件中刪除正確的行(假設它存在)。但是,我還想在文件的末尾添加另一行,並且不能在第二行使用「echo something >> file」。我甚至不能使用第二個sed調用。
這樣做的語法是什麼?
我知道如何使用sed進行刪除和替換,但我在使用append命令時遇到了問題。現在,我正在這樣做:你怎麼能刪除一行,並附加一個單行sed命令?
sed -i '' -e '/optima/d' file
這將從文件中刪除正確的行(假設它存在)。但是,我還想在文件的末尾添加另一行,並且不能在第二行使用「echo something >> file」。我甚至不能使用第二個sed調用。
這樣做的語法是什麼?
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
當我嘗試這句話,我得到以下錯誤: ** sed:1:「/ optima/d; $ a \ something **和第二行**」:在命令**結尾處的\之後的多餘字符。 – 2013-03-26 13:52:42
是否引用了整個sed操作? sed''....''? – Kent 2013-03-26 13:57:01
是的,用單引號。我甚至小心地有正確的空格。如果這很重要,它在OS X w/bash上,但我無法想象他們搞砸了sed實現。 – 2013-03-26 14:04:00
這裏更好的方法是打印所有,但要刪除,然後追加的最後一行行。即使您正在移除的行是最後一行,但這種方法仍然有效,而Kent的方法對於這種情況不起作用。
sed -i -n -e '/optima/!p' -e '$asomething' file
例子:
$ seq 5 | sed -n -e '/5/!p' -e '$asomething'
1
2
4
something
另外值得一對看sed的答案:http://superuser.com/q/590630/26006 – haridsv 2016-11-16 12:11:29