315行と2列のファイルがあります。次のように、最初の列は個人であり、2番目の列はグループIDです。
HT170_SD2W-14 HA_16
Q093_MK7-13 HA_25
Q87_MK3-2 HA_21
HT225_KS2A-23R HA_7
HT256_KS2A-4 HA_7
HT216_SD2A-32 HA_15
ED19_SD1A40-3_357 HA_13
HA_7に関する同様の情報を得るために、各グループに属する個人を抽出し、別々のファイルに保存したいと思います。
HT225_KS2A-23R
HT256_KS2A-4
どうすればいいですか?
答え1
$ awk '{ f = "pop-" $2 ".txt" ; print $1 >f }' file
与えられた入力に対して次のファイルが生成されます。
$ ls -l pop-*.txt
-rw-r--r-- 1 kk wheel 18 Sep 28 18:47 pop-HA_13.txt
-rw-r--r-- 1 kk wheel 14 Sep 28 18:47 pop-HA_15.txt
-rw-r--r-- 1 kk wheel 14 Sep 28 18:47 pop-HA_16.txt
-rw-r--r-- 1 kk wheel 10 Sep 28 18:47 pop-HA_21.txt
-rw-r--r-- 1 kk wheel 12 Sep 28 18:47 pop-HA_25.txt
-rw-r--r-- 1 kk wheel 28 Sep 28 18:47 pop-HA_7.txt
$ cat pop-HA_7.txt
HT225_KS2A-23R
HT256_KS2A-4
プログラムawk
は2番目のフィールドを選択し、その前後に適切なファイル名ビットを追加して出力ファイル名を生成します。次に、最初のフィールドをそのファイルに出力します。