awk は条件付きで大容量ファイルを複数の出力ファイルに分割します。

awk は条件付きで大容量ファイルを複数の出力ファイルに分割します。

90GBファイルを条件付きで複数のファイルに分割する必要があります(そのファイルはマルチテーブルファイルであり、単一テーブルに分割されます)。

私はkshとawkでテーブルルールを繰り返し、awkを使用して出力ファイルに印刷するかどうかを選択するソリューションを作成しました。問題は、29のルールに対してソースファイル(90GB)を29回読み取る必要があることです。

ソースファイルを一度に読み込み、条件付きで1つまたは別の出力にリダイレクトして複数のファイルに書き込むことはできますか?

ベストアンサー1

あなたはそれを使用することができますリダイレクト(POSIXで指定されているので、他のawksでも動作するはずです)。簡単な例:

$ awk '$1 % 2 {print > "odd"; next} {print > "even"}' <(seq 1 10)
$ tail -n +1 odd even                                            
==> odd <==
1
3
5
7
9

==> even <==
2
4
6
8
10

したがって、29個のファイル名で構成された配列を作成するか、変数(はカウンター)を使用して構成できprint > "filenum" nますn

おすすめ記事