sed命令替换模式&(\ n)不工作的终端

时间:2014-09-24 04:38:38

标签: regex bash shell sed terminal

尝试替换以" \ 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

2 个答案:

答案 0 :(得分:3)

echo "test
some text testing
test
some text testing
test" | sed '/testing/{N;s/ testing\n/|/;}'

我们在模式空间中查找与/testing/匹配的行,并使用N将下一行追加到模式空间。这两行由\n分隔。然后,我们继续简单替换删除testing\n并将其替换为|

答案 1 :(得分:1)

如果您对其他建议持开放态度,可以使用Perl单行使用您的模式。

$ echo "test
> some text testing
> test
> some text testing
> test" | perl -pe 's/ testing\n/|/g'

test
some text|test
some text|test