テキストファイルで一意の値をソートする方法は? [コピー]

テキストファイルで一意の値をソートする方法は? [コピー]

次のテキストファイルがあります。

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()「オープンファイルが多すぎます」エラーを防ぐために追加されました。

関連情報