要在第三个字段上保留数字小于100(百)的行,如何使用awk脚本处理尾随和引导下划线。
以下是示例输入:
asd 5.0 _84_ 34
sds 3.8 _340_ 56
sds 3.8 99 56
sds 3.8 _340_ 56
ddd 288 _26_ 45
sdf 321 _374_ 53
tyu 321 _39_ 89
sds 3.8 120 56
wer 3.8 _28_ 345
sds 3.8 45 56
tre 230 _265_ 90
rtu 389 _372_ 45
bnm 965 _270_ 745
fgh 856 _44_ 346
sds 3.8 107 56
预期输出将是:
asd 5.0 _84_ 34
sds 3.8 99 56
ddd 288 _26_ 45
tyu 321 _39_ 89
wer 3.8 _28_ 345
sds 3.8 45 56
fgh 856 _44_ 346
答案 0 :(得分:1)
awk '$3 ~ /^_?[[:digit:]]{1,2}_?$/'
这将匹配可选的下划线,一个或两个数字后跟一个可选的下划线。
答案 1 :(得分:0)
尝试这个awk one-liner:
kent$ awk -F'_| +' 'NF==4&&$3<100||NF>=6&&$4<100' file
asd 5.0 _84_ 34
sds 3.8 99 56
ddd 288 _26_ 45
tyu 321 _39_ 89
wer 3.8 _28_ 345
sds 3.8 45 56
fgh 856 _44_ 346
答案 2 :(得分:0)
使用gawk:
awk 'match($3, /([0-9]+)/, a) {if (a[1]<100) print $0}' input
答案 3 :(得分:0)
$ awk '{line=$0; gsub(/_/,"")} $3 < 100{print line}' file
asd 5.0 _84_ 34
sds 3.8 99 56
ddd 288 _26_ 45
tyu 321 _39_ 89
wer 3.8 _28_ 345
sds 3.8 45 56
fgh 856 _44_ 346