我正在尝试从HTML日志文件中获取错误数量。这是我的代码(是的,我知道我正在混合使用bash和perl):
for line in `cat paths.txt`; do grep Failed ${line} | perl -pe 'm/\d+/'; done
我期望得到一个数字列表,例如
0
1
0
0
0
1
6
但我得到的是包含错误的整行,例如,
Total Failed: <strong>0</strong> Total Failed: <strong>1</strong> Total Failed: <strong>0</strong> Total Failed: <strong>0</strong> Total Failed: <strong>0</strong> Total Failed: <strong>1</strong> Total Failed: <strong>6</strong>
我在看什么?
答案 0 :(得分:6)
perl -pe 'm/\d+/';
只需执行模式匹配,打印的行不会更改。如果您只想打印数字,则需要以下内容:
perl -pe 's/\D+//g' # change $_
或
perl -nE 'say $1 if /(\d+)/' # only print the match
但为什么不使用所有perl?
perl -nwE 'say $1 if /Failed.*(\d+)/' paths.txt
答案 1 :(得分:2)
请尝试使用此代码:
perl -ne '/\d+/ && print "$&\n"'
答案 2 :(得分:1)
为什么不简单呢?
grep -o '[0-9]\+' paths.txt