我只是想在 sed 搜索中添加一个 if-then 语句。在正则表达式中是(?(?=phrase)then_code|else_code)
.
这是我拥有的等效正则表达式代码:
"[^"]*"(?(?=,)[^.]*.|[^!]*!)
与以下内容匹配:
呜呜呜"Hello", Bob said
。哈哈哈哈哈哈哈
"Goodbye"!
哈哈
注意:请不要问这个例子的实用性;真正的代码是实用的。
我将如何在 sed 中搜索它?
我只是想在 sed 搜索中添加一个 if-then 语句。在正则表达式中是(?(?=phrase)then_code|else_code)
.
这是我拥有的等效正则表达式代码:
"[^"]*"(?(?=,)[^.]*.|[^!]*!)
与以下内容匹配:
呜呜呜"Hello", Bob said
。哈哈哈哈哈哈哈
"Goodbye"!
哈哈
注意:请不要问这个例子的实用性;真正的代码是实用的。
我将如何在 sed 中搜索它?
据我所知,这种语法只存在于 Perl 正则表达式中。您必须使用该psed
程序,顾名思义,它是一个sed
用 Perl 编写的程序(因此使用 Perl 的正则表达式引擎)。我相信它随 Perl 发行版一起提供。无论如何,它最终出现在我的路径中。
您也可以直接将 Perl 与-p
、-i
和-e
参数一起使用,以针对某些文件集中的每一行运行任意 Perl 代码:
$ (echo one; echo two; echo three) | perl -p -i -e 's/t/q/g'
one
qwo
qhree