gpt4 book ai didi

perl - 仅从命令行打印 perl 中的匹配行

转载 作者:行者123 更新时间:2023-12-03 21:02:04 24 4
gpt4 key购买 nike

我正在尝试从文件中提取所有 ip 地址。到目前为止,我只是在使用

cat foo.txt | perl -pe 's/.*?((\d{1,3}\.){3}\d{1,3}).*/\1/'

但这也会打印不包含匹配项的行。我可以通过 grep 管道来解决这个问题,但这似乎应该是不必要的,如果正则表达式不完美匹配,可能会导致错误。

有没有更简单的方法来实现这一点?

最佳答案

尝试这个:

cat foo.txt | perl -ne 'print if s/.*?((\d{1,3}\.){3}\d{1,3}).*/\1/'

或者:
<foo.txt perl -ne 'print if s/.*?((\d{1,3}\.){3}\d{1,3}).*/\1/'

这是我在仍然使用 Perl 时能想到的最短的替代方案。

但是这种方式可能更正确:
<foo.txt perl -ne 'if (/((\d{1,3}\.){3}\d{1,3})/) { print $1 . "\n" }'

关于perl - 仅从命令行打印 perl 中的匹配行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5098884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com