使用perl以有效的方式提取第三列

Ibr*_*ish 1 regex perl

此Perl代码将输出提供为三.

echo one two three four | perl -pe 's/(\w+)\s(\w+)\s(\w+).*/$3/'
Run Code Online (Sandbox Code Playgroud)

是否有任何优雅的解决方案可以缩短这个冗长的重复正则表达式?

cod*_*der 7

Perl有一个autosplit命令行选项(参见perlrun,-a)

echo one two three four | perl -lane 'print $F[2]'
Run Code Online (Sandbox Code Playgroud)

编辑:-l按Vijay 添加

  • 您可以通过添加-l标志`perl -lane'打印$ F [2]'来删除"\n" (2认同)