【问题标题】:perl one liner alternative to this bash "chain"?perl 一个替代这个 bash“链”的班轮?
【发布时间】:2010-04-12 06:36:45
【问题描述】:

我正在尝试按照“Minimal Perl”一书中描述的方式理解 Perl。

我已将所有源 txt 文件上传到我自己的服务器上:results folder

我在这样的“链”中使用多个 bash 命令得到了输出:

cat run*.txt | grep '^Bank[[:space:]]Balance'|cut -d ':' -f2 | grep -E '\$[0-9]+'

我知道这远不是最简洁和最有效的,但至少它有效......

随着我们的 uni 主题现在转移到 Perl 部分,我想知道是否有一种方法可以在一行中获得相同的结果?

我正在尝试类似下面的代码但卡在中间:

Chenxi Mao@chenxi-a6b123bb /cygdrive/c/eMarket/output
$ perl -wlne 'print; if $n=~/^Bank Balance/'
syntax error at -e line 1, near "if $n"
Execution of -e aborted due to compilation errors.

【问题讨论】:

    标签: perl


    【解决方案1】:

    你不应该有 ;打印后。所以

    perl -wlne 'print $1 if $n=~/^Bank Balance\s*:\s*(\d+)/'
    

    【讨论】:

      【解决方案2】:
      perl -F/\:/ -ane 'print $F[1]."\n" if /Bank Balance/ && $F[1]!~/\$-/' run*.txt
      

      这里还有一个简短版本的 bash 命令,仅使用 awk

      awk  -F": " '/Bank[ \t]*Balance/&& $2!~/\$-/{print $2}' run*.txt
      

      【讨论】:

      • @ghostdog74:感谢您的两个解决方案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 2020-10-06
      相关资源
      最近更新 更多