如何在sed中制作if-then语句

时间:2013-10-19 04:35:21

标签: regex linux if-statement sed

我只是想在sed搜索中添加if-then语句。在正则表达式中它是(?(?=phrase)then_code|else_code)

这是我拥有的等效正则表达式代码:

"[^"]*"(?(?=,)[^.]*.|[^!]*!)

符合以下条件:

blah blah blah "Hello", Bob said。等等等等等等 "Goodbye"! blah blah blah

注意:请不要问这个例子的实用性;真正的代码是实用的。

我如何在sed中搜索?

1 个答案:

答案 0 :(得分:2)

据我所知,该语法仅存在于Perl正则表达式中。您将不得不使用psed程序,顾名思义,它是一个用Perl编写的sed程序(因此使用Perl的正则表达式引擎)。我相信它附带Perl发行版;无论如何,它最终都出现在我的路径中。

您也可以直接使用Perl和-p-i-e参数,针对某些文件集中的每一行运行任意Perl代码:

$ (echo one; echo two; echo three) | perl -p -i -e 's/t/q/g'
one
qwo
qhree

请参阅perldoc perlrun