perl -a: как изменить разделитель столбцов? - PullRequest
6 голосов
/ 31 августа 2011

Я хочу прочитать столбцы в файле, где разделитель :.

Я попробовал это так (потому что согласно http://www.asciitable.com, восьмеричное представление двоеточия равно 072):

$ echo "a:b:c"  | perl -a -072 -ne 'print "$F[1]\n";' 

Я хочу напечатать b, но это не работает.

Ответы [ 2 ]

13 голосов
/ 31 августа 2011

Посмотрите на -F в perlrun:

% echo "a:b:c" | perl -a -F: -ne 'print "$F[1]\n";'
b

Обратите внимание, что значение берется как регулярное выражение, поэтому некоторым разделителям может потребоваться дополнительное экранирование:

% echo "a.b.c" | perl -a -F. -ne 'print "$F[1]\n";'

% echo "a.b.c" | perl -a -F\\. -ne 'print "$F[1]\n";'
b
5 голосов
/ 31 августа 2011

-0 указывает разделитель записи (строка).Это было причиной того, что Perl получил три строки:

>echo a:b:c | perl -072 -nE"say"
a:
b:
c

Поскольку ни в одной из этих строк нет пробелов, $F[1] будет пустым, если будет использоваться -a.

-F указывает входной поле разделитель.Это то, что вам нужно.

perl -F: -lanE'say $F[1];'

Или, если вы застряли с более старым Perl:

perl -F: -lane'print $F[1];'

Параметры командной строки задокументированы в perlrun .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...