行値によるファイルのフィルタリング

行値によるファイルのフィルタリング

最初の列に特定の文字が含まれており、最初の列に特定の値より大きい数値を持つ行を選択する必要があります。

特に、「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/

関連情報