嘗試替換以「\ n」換行符結尾的特定模式,但似乎找不到它。但是我需要能夠將結果傳遞給另一個命令,並且它不在文件中。sed命令替換模式&( n)不起作用終端
例子:
$echo "test
some text testing
test
some text testing
test" | sed 's/ testing\n/|/g' | (more commands)
預期的結果將是:
test
some text|test
some text|test
嘗試替換以「\ n」換行符結尾的特定模式,但似乎找不到它。但是我需要能夠將結果傳遞給另一個命令,並且它不在文件中。sed命令替換模式&( n)不起作用終端
例子:
$echo "test
some text testing
test
some text testing
test" | sed 's/ testing\n/|/g' | (more commands)
預期的結果將是:
test
some text|test
some text|test
echo "test
some text testing
test
some text testing
test" | sed '/testing/{N;s/ testing\n/|/;}'
我們期待在我們的模式空間匹配/testing/
線和追加使用N
下一行模式空間。這兩條線由\n
分隔。然後,我們繼續進行簡單替換,即刪除testing\n
並用|
替換它。
:在替換命令'不良標識:「}」' – 2014-09-24 04:53:11
@double_j看起來,你是在Mac上。在'}'之前放置';'。 'sed'/ testing/{N; s/testing \ n */|/g;}''。 BSD'sed'在'}'前面需要';'。 – 2014-09-24 04:55:45
@double_j上面的代碼適用於我,我只是複製並粘貼到終端, – Ram 2014-09-24 04:56:39
如果您願意接受其他建議,可以使用Perl一行代碼來使用您的模式。
$ echo "test
> some text testing
> test
> some text testing
> test" | perl -pe 's/ testing\n/|/g'
test
some text|test
some text|test
我用@ram回答,因爲他仍在使用'sed',但我也喜歡這種方法,並可能在別處使用它,謝謝! – 2014-09-24 05:05:49
這是獲得一個錯誤嘗試的是... sed的用於多任務.. – Ram 2014-09-24 04:41:15