如何利用perl命令行, 来执行正则表达式,寻找匹配的行?

2025-04-26 08:03:21
推荐回答(2个)
回答1:

楼上的是找出其中之一呀,楼主要的是同时包含两个句子。
可以这样
perl -n -e 'print if ($_ =~/Barney/ && $_ =~ /Fred/)' test.txt >new.txt

其实这样的实现用awk命令这些很好用。楼主可以学习学习awk sed grep 等命令。
我补充个实例吧。
awk '{if (/Barney/ && /Fred/) print }' test.txt > new.txt
more test.txt | grep Barney | grep Fred >new.txt (这个管道用着很有意思)
都测试了一下,可行

回答2:

perl -n -e '/Barney/ && /Fred/ && print' test.txt>new.txt
-p参数会把不匹配的行也打印出来。你是用错了这个参数,所以导致文件输出内容出错的。

我没看清问题,谢谢楼上提醒。