我的文本文件如下所示
date="2017-10-10" ip=192.168.1.1:22 inbound=100 outbound=100
date="2017-10-10" ip=192.168.1.1:22 inbound=100
date="2017-10-10" ip=192.168.1.1:22 outbound=100
我使用下面的 awk 代码来打印匹配的字符串并提取“=”后面的内容。
awk '{for(i=1;i<=NF;i++)if($i~/inbound=/)print $(i)}' | cut -d : -f1 | cut -d = -f2
例如,我会搜索“inbound=”并提取“100”。
但棘手的部分是“入站”不会出现在文本的所有行中
现在,如果一行没有“inbound”一词,我想打印“0”。
预期产出
100
100
0 Not Found
使用 GNU awk
awk '{print match($0,/inbound=([0-9]+)/,a)?a[1]:0}' file
In perl
perl -lne 'print /inbound=(\d+)/?$1:0' file
In sed
sed 's/.*inbound=\([0-9]\+\).*/\1/;t;s/.*/0/' file
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)