Perl однострочный скрипт с условием

У меня есть текстовый файл. Например

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

Я пытаюсь выбрать строку, которая содержит "один", используя perl-oneliner:

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

Но я получаю все строки из файла. Мне не нужно использовать регулярное выражение (в этом случае помогает reg exp), мне нужно точное совпадение во втором поле. заранее спасибо

1 ответ

Использование 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
Другие вопросы по тегам