Linux
按行值過濾文件
我需要選擇第一列中包含某個字元並且第一列中的數字大於特定值的行。
具體來說,我需要選擇第一列中包含“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/
一個
awk
解決方案:$ awk -F' ' '$1 ~ /^[0-9]*G/ { sub(/G/, "", $1); if(+$1 > 50) print }' file 56 qa15384_TPK0001664_51232746/ 140 qa29996_TPK0000949_51951816/
由於“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/