
ファイルを複数のファイルに分割したいです。
以下は私が持っているファイルです。
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