我试图按照“Minimal Perl”一书中描述的方式理解Perl。
我已将所有源txt文件上传到我自己的服务器上:results folder
我在“链”中使用了几个bash命令得到了输出:
cat run*.txt | grep '^Bank[[:space:]]Balance'|cut -d ':' -f2 | grep -E '\$[0-9]+'
我知道这远非最简洁和有效,但至少它有效......
由于我们的单一主题现在转移到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.
答案 0 :(得分:7)
perl -wlne 'print $1 if $n=~/^Bank Balance\s*:\s*(\d+)/'
答案 1 :(得分:3)
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