2014-02-21 37 views
0

我想在每行有一些字符串的末尾添加特定的字符串,並且空白行應不受影響。 如何使用sed命令,以便我所需的字符串僅在選定的行之後被添加。在具有一些特定字符串的行的末尾添加文本ksh

說文件名TEMP.TXT

abc "123.cf" 
abc 
abc "456.cf" 
ksh 
entry "e123.cf" 

現在我想追加> /dev/null 2>&1 &到每一行的結束以來的.cf」到底 和需要的結果是

abc "123.cf" > /dev/null 2>&1 & 
abc 
abc "456.cf" > /dev/null 2>&1 & 
ksh 
entry "e123.cf" > /dev/null 2>&1 & 

我使用命令:

sed -e 's:.cf"$:.ccf" > /dev/null 2>&1 &:' -i temp.txt

似乎不起作用。 :-( 請幫助

回答

1
awk '/.cf"$/ {$(NF+1) = "> /dev/null 2>&1 &"} 1' 
+0

+1很好! –

1
kent$ sed 's#.cf"$#& > /dev/null 2>\&1 \&#' file 
abc "123.cf" > /dev/null 2>&1 & 
abc 
abc "456.cf" > /dev/null 2>&1 & 
ksh 
entry "e123.cf" > /dev/null 2>&1 & 

它在bash工作

+0

@VikU,原因是''在&A s ///命令的替換部分是與模式相匹配的文本的佔位符,因此'echo foo | sed's/o /&x/g'輸出'foxox',參見https://www.gnu .org/software/sed/manual/sed.html#The-_0022s_0022-Command –

+0

感謝它工作d。 –

0

Glenns柱的變形:。

awk '/.cf"$/ {$0=$0FS"> /dev/null 2>&1 &"}8' file 
相關問題