Как подключить Bash вывод командной строки командной строки в Perl для обработки Regex?

У меня есть некоторые выходные данные из некоторых команд Bash Shell. Выходные данные ограничиваются строкой "\n" или "\ 0". Я хотел бы знать, что есть какой-либо способ передать вывод в Perl и обработать данные по строкам внутри Perl (точно так же, как передать вывод на awk, но в моем случае он находится в контексте Perl.). Я полагаю, что команда может быть примерно такой:

Bash Shell command | perl -e 'some perl commands' | another Bash Shell command

Предположим, что я хочу заменить символ ":" на символ "@" в "строка за строкой" (не глобальная подстановка), я могу использовать условие, например, нечетную или четную линию, чтобы определить, будет ли текущая строка должен иметь подстановку или нет.), то как я мог это достичь.

Ответы

Ответ 1

См. perlrun.

perl -lpe's/:/@/g'      # assumes \n as input record separator
perl -0 -lpe's/:/@/g'   # assumes \0 as input record separator

perl -lne'if (0 == $. % 2) { s/:/@/g; print; }' # modify and print even lines

Да, Perl может появляться в любом месте в конвейере, как awk.

Ответ 2

Переключатель командной строки -p (если вы хотите автоматическую печать) или -n (если вы этого не хотите) будет делать то, что вы хотите. Содержимое строки находится в $_ so:

perl -pe's/\./\@/g'

будет решением. Как правило, вы хотите прочитать оператор "< > " (алмаз), который является способом перехода к не-oneliners.