次のテキストファイルがあります。
A f1
B f2
A f3
B f4
B f5
最初の列の値に基づいてソートして別のファイルに保存したいと思います。
希望の出力:
A.txt:
A f1
A f3
B.txt:
B f2
B f4
B f5
試しましたがuniq
動作しません。編集:txtファイルと出力ファイルを目的の方法で公開することはできませんが、次の行にする必要があります。
答え1
ほとんどの場合、単に次のことができます。
awk '{print > $1 ".txt"}' file
答え2
必要なのはuniqではなくawkだけです。
awk ' $1 == "A" { print }' $file > something.txt` #This will print all A's
awk ' $1 == "B" { print }' $file > something.txt` #This will print all B's.
注:$file
入力ログの名前になります。
編集:私の元の答えは提供されたデータに基づいていました。今更新しました。したがって、私の元の「必要なのはgrepだけです」はもう機能せず、「awk」に変更されました。
答え3
短い awk スクリプトがアクションを実行します。
sort file | awk '
$1 != prev {prev = $1; if (out) close(out); out = $1 ".txt"}
{print > out}
'
close()
「オープンファイルが多すぎます」エラーを防ぐために追加されました。