Regex sed命令替换模式&;(\n)终端不工作
试图替换以“\n”换行符结尾的特定图案,但似乎无法找到它。但我需要能够将结果通过管道传输到另一个命令,而该命令不在文件中 例如:Regex sed命令替换模式&;(\n)终端不工作,regex,bash,shell,sed,terminal,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 我们在模式空间中查找与/testing/匹配的行,并使用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
我们在模式空间中查找与/testing/
匹配的行,并使用N
将下一行追加到模式空间。这两行由\n
分隔。然后,我们继续进行一个简单的替换,即删除测试\n
并将其替换为
我们在模式空间中查找与
/testing/
匹配的行,并使用N
将下一行追加到模式空间。这两行由\n
分隔。然后,我们继续进行一个简单的替换,即删除测试\n
并将其替换为
如果您愿意接受其他建议,您可以使用模式使用Perl one liner
$ echo "test
> some text testing
> test
> some text testing
> test" | perl -pe 's/ testing\n/|/g'
test
some text|test
some text|test
如果您愿意接受其他建议,那么可以使用模式使用Perl one liner
$ echo "test
> some text testing
> test
> some text testing
> test" | perl -pe 's/ testing\n/|/g'
test
some text|test
some text|test
这是多行sed的任务。这是多行sed的任务。尝试以下操作时出错…:
替换命令中的错误标志:'}'
@double\j看起来您在Mac上。放置一个代码>在}
之前<代码>sed'/testing/{N;s/testing\N*/|/g;}'
。BSDsed
需要一个
before}
@ramgnused
不会抱怨。BSDsed
will.@double\u j检查更新。第一种模式是隔离线。第二种模式是去掉你不需要的部分。拉姆,我给你的答案加了一些解释。如果您觉得它已经彻底改变了它,请继续并还原它。@jaypal非常感谢您让答案变得更好,我正要添加一个解释,这正是我的想法。尝试以下操作时出错…:替换命令中的错误标志:'}'
@double\u j看起来您在Mac上。放置一个代码>在}
之前<代码>sed'/testing/{N;s/testing\N*/|/g;}'
。BSDsed
需要一个
before}
@ramgnused
不会抱怨。BSDsed
will.@double\u j检查更新。第一种模式是隔离线。第二种模式是去掉你不需要的部分。拉姆,我给你的答案加了一些解释。如果您觉得它已经彻底改变了它,请继续并还原它。@jaypal非常感谢您让答案变得更好,我正要添加一个解释,这正是我的想法。我选择@ram answer,因为他仍然在使用sed
,但我也喜欢这个方法,可能会在其他地方使用它,谢谢!我选择@ram answer,因为他仍然在使用sed
,但我也喜欢这种方法,可能会在其他地方使用,谢谢!