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