特定の列に対して特定の数の行を抽出したいと思います。ファイルは以下のようになります。
ID Age
1 2
2 5
3 36
4 2
5 29
...
2000 84
2番目の列に基づいて別々のファイルから行を抽出したいと思います。
for Num in {0..84}
do
awk '$2==${Num}' file > out_${Num}
done
上記のコマンドは機能しませんが、同様のことをしたいと思います。誰でも私を助けることができますか?
ありがとうございます!
答え1
for num in {0..84}; do co=$(awk -v num="$num" '$2 == num {print $0}' file1|wc -l); if [[ $co > 0 ]]; then awk -v num="$num" '$2 == num {print $0}' file1 >out_$num;fi; done
テストすると、この場合は機能します。
答え2
85番を走る必要もなくwc
、170番を走る必要もありませんawk
。その他に$2
制限がありますか?内部で印刷をリダイレクトしてみてください(無制限)。$2 >= 0
$2 <= 84
awk
awk 'NR>1 {print > ("out_" $2)}' file
出力ファイルが許可されているオープンファイルの最大数(linux:システムパラメータOPEN_MAX)に近い場合は、次のことを行う必要があります。追加彼らに与えてください。