私のファイルを複数のファイルに分割したいです。
以下は私が持っているファイルです。
sort a # 3|4
sort a # 2|5
sort b # 1|2
sort b # 2|5
ファイルを次の部分に分割したい
ファイル1
sort a # 3|4
sort a # 2|5
ファイル2
sort b # 1|2
sort b # 2|5
ご覧のとおり、2番目の列を基準に分割しました。 2番目の列にはさまざまな値があるため、ファイルを分割するのに時間がかかります。この問題を解決するには?
答え1
AWK
解決策:
awk '!a[$2]++{ fn="file"++c }{ print > fn }' inputfile
!a[$2]++
- 一意の2番目のフィールド値が見つかったことを確認し、$2
それを配列のインデックスとして使用しますa
。一意の値が最初に表示された場合にのみ!a[$2]++
条件を評価します。true
$2
fn="file"++c
- 生成するファイル名サフィックスが増加するにつれて++c
結果を見る:
$ head file[12]
==> file1 <==
sort a # 3|4
sort a # 2|5
==> file2 <==
sort b # 1|2
sort b # 2|5
答え2
split -l 2 test
これにより、2つの分割ファイルが作成されます。分割ファイルの出力:
$ cat xaa
sort a # 3|4
sort a # 2|5
$ cat xab
sort b # 1|2
sort b # 2|5