次のテキストファイルがあります。
入力ファイル1.txt
.......................
cha21 1 3 5 nar
cha21 2 3 6 piy
cha23 2 3 5 ram
cha23 3 3 3 dam
cha27 5 3 7 pam
................................
「cha21」、「cha23」、および「cha27」行に対応する5つの列をすべて3つの異なる出力ファイル(例:cha21.txt、cha23.txt、cha27.txt)に抽出したいと思います。
結果ファイル
cha21.txt
..........
cha21 1 3 5 nar
cha21 2 3 6 piy
......................
cha23.txt
cha23 2 3 5 ram
cha23 3 3 3 dam
...................................
cha27.txt
cha27 5 3 7 pam
...........................
3つのファイルに対してgrepコマンドでこれを3回実行できます。つまり、1つのコマンドで実行できます。
答え1
頑張ります
awk '{print >> $1 ".txt" ;}'
どこ
print
行全体を印刷します。>> $1 ."txt"
この行を$ 1とマークされたファイルに書き込み(追加).txt
します。
編集する:
行、ドットのある行などをコメントアウトした場合
努力する
awk '$1 ~ /cha/ {print >> $1 ".txt" ;}'
"cha"で始まるファイルだけが埋められます。
答え2
それは簡単ですawk
:
awk '{print $0 >> $1".txt"}' file1.txt