perl一行脚本有条件

时间:2017-01-24 13:25:38

标签: perl comparison-operators

我有一些文字文件。 E.g。

1;one;111
2;two;222
22;two;222
3;three;333

我尝试选择包含" one"使用perl-oneliner:

perl -F";" -lane 'print if $F[1]=="one"' forPL.txt

但我从文件中获取所有行。 我不需要使用正则表达式(在这种情况下reg exp有帮助),我需要在第二个字段上完全匹配。 提前谢谢

1 个答案:

答案 0 :(得分:3)

使用eq进行字符串比较,而不是==用于数字比较。

perl -F";" -e 'print if $F[1] eq "one" ' test.txt

编辑:正如工具在他的评论中所建议的那样,如果您使用了警告,您可以很容易地发现问题。

$ perl -F";" -e 'use warnings; print if $F[1] == "one" ' test.txt 
Argument "one" isn't numeric in numeric eq (==) at -e line 1, <> line 1.
Argument "one" isn't numeric in numeric eq (==) at -e line 1, <> line 1.
1;one;111
Argument "two" isn't numeric in numeric eq (==) at -e line 1, <> line 2.
2;two;222
Argument "two" isn't numeric in numeric eq (==) at -e line 1, <> line 3.
22;two;222
Argument "three" isn't numeric in numeric eq (==) at -e line 1, <> line 4.
3;three;333