我有一些Bash Shell命令的输出数据.输出以"\n"或"\ 0"逐行分隔.我想知道有没有办法将输出传递到Perl并在Perl中逐行处理数据(就像将输出汇总到awk一样,但在我的情况下它是在Perl上下文中.).我想命令可能是这样的:
Bash Shell command | perl -e 'some perl commands' | another Bash Shell command
Run Code Online (Sandbox Code Playgroud)
假设我想在"逐行"的基础上将所有":"字符替换为"@"字符(不是全局替换,我可以使用条件,例如奇数或偶数行来确定当前行是否应该具有替代与否.),那么我怎么能实现这一点.
dax*_*xim 26
见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
Run Code Online (Sandbox Code Playgroud)
是的,Perl可能出现在管道中的任何地方,就像awk一样.
命令行开关-p(如果你想自动打印)或-n(如果你不想要它)将做你想要的.行内容在$ _中:
perl -pe's/\./\@/g'
将是一个解决方案.通常,您希望阅读"<>"(钻石)运算符,这是非oneliner的方法.
| 归档时间: |
|
| 查看次数: |
19606 次 |
| 最近记录: |