2016-08-20 871 views
1

我想要在SED中恢復我的模式空間。我可以用s/^.*$/hello world/;來做到這一點 - 但我可以用c命令做到這一點 - 在我的sed腳本中不使用換行符?從這個角度來看,我不完全清楚這是否可能。使用sed的追加/更改/插入而不換行

(爲ai命令相同的問題)

+0

可能重複[Sed:在一行中使用a,c或i](http://stackoverflow.com/questions/38938645/sed-using-ac-or-i-in-a-one-班輪) – kdhp

回答

1

如果你的shell是bash,這裏是一個班輪使用c一個方便的方法:

$ seq 3 | sed $'/2/c\\\nNew Text' 
1 
New Text 
3 

這看起來對任何線包含2並將其更改爲New Text

這使用bash的$'...'功能在字符串中輸入換行符。換行符由\n表示。在c之後所需的反斜槓由\\表示。

$'...'功能也可在ksh93zshmksh和FreeBSD sh

+0

夠好,謝謝。 – einpoklum