我只是想在sed搜索中添加if-then语句。在正则表达式中它是(?(?=phrase)then_code|else_code)
。
这是我拥有的等效正则表达式代码:
"[^"]*"(?(?=,)[^.]*.|[^!]*!)
符合以下条件:
blah blah blah"Hello", Bob said
。等等等等等等
"Goodbye"!
blah blah blah
注意:请不要问这个例子的实用性;真正的代码是实用的。
我如何在sed中搜索?
答案 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
。