regex - 如何跳过类似 perl sed 的查找/替换命令中的不匹配项?

标签 regex perl sed

给定这个简单的 sed 命令:

echo "abc\nxyz" | sed "s/abc/***/"

等效的 Perl 版本是

echo "abc\nxyz" | perl -pe "s/abc/***/" 

Sed 让我只输出这样的匹配行:

echo "abc\nxyz" | sed -n "s/abc/***/p"

我如何使用 Perl 做到这一点?

仅供引用,我想使用 Perl 的正则表达式引擎,它似乎比 sed 功能更全,但我想要这个 sed 选项。

最佳答案

Perl 的-p 选项意味着对输入的每一行执行-e ... 的操作,然后打印。更改为 -n 意味着读取文件的每一行并对每一行执行 -e ...。因此,实现您想要的目标的简单方法如下:

echo "abc\nxyz" | perl -ne "print if s/abc/***/"

关于regex - 如何跳过类似 perl sed 的查找/替换命令中的不匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25941581/

相关文章:

regex - 从文本文件中获取数据

python - 使用 Python 从网站下载所有 pdf 文件

perl - 使用perl求中位数、众数、标准差?

linux - 如何用 sed 删除空的重复行?

arrays - 有条件地实例化一个新的Perl数组

perl - 如何将十六进制转换为 RGB? (perl)

regex - sed 从字符串中删除第一个模式和最后一个模式

regex - 使用正则表达式重写规则以添加正斜杠

regex - 使用 sed 和 mv 命令取消隐藏 unix 中的隐藏文件

java - java中的正则表达式有条件