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