给定这个简单的 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/