我需要选择第一列中包含特定字符并且第一列中的数字大于特定值的行。
具体来说,我需要选择第一列中包含“G”并具有数字比...更棒50如下所示:
输入文件:
764M qa11279_TPK0002730_50901083/
762M qa10589_TPK0002730_50796634/
11G qa17805_TPK0001664_51330191/
56G qa15384_TPK0001664_51232746/
140G qa29996_TPK0000949_51951816/
输出文件:
56G qa15384_TPK0001664_51232746/
140G qa29996_TPK0000949_51951816/
答案1
解决方案awk
:
$ awk -F' ' '$1 ~ /^[0-9]*G/ { sub(/G/, "", $1); if(+$1 > 50) print }' file
56 qa15384_TPK0001664_51232746/
140 qa29996_TPK0000949_51951816/
答案2
由于“G”仅出现在第一列中,如示例输入所示:
$ awk '/G/ && ($1+0 > 50)' file
56G qa15384_TPK0001664_51232746/
140G qa29996_TPK0000949_51951816/
但如果它可能发生在其他领域:
$ awk '($1 ~ /G/) && ($1+0 > 50)' file
56G qa15384_TPK0001664_51232746/
140G qa29996_TPK0000949_51951816/
答案3
根据@αГsнιη的评论,但修复了比较:
awk '$1 ~ /^[[:digit:]]+/ && $1 ~ /G$/ && $1+0 > 50' file
56G qa15384_TPK0001664_51232746/
140G qa29996_TPK0000949_51951816/