6

コマンドの結果を含む多くのファイルがあります: uniq -c some_file > some_file.out

例: 1.out:

1a
 2b
 4c

2.アウト

2b
 8世紀

これらの結果をマージしたいので、次のようになります。

1a
 4b
 12世紀

sort または uniq で処理できると思いましたが、それに関連するオプションはありません。ruby/perl スクリプトを書くのも方法の 1 つですが、コア *nix コマンド (前述の sort や uniq など) を使用して簡単に実行したいと考えています。

編集:明確にするために。元のファイルがなく、*.out ファイルをマージする必要があります。

手伝ってくれてありがとう!

4

4 に答える 4

5

で試してみてくださいawk

awk '{ count[$2] += $1 } END { for(elem in count) print count[elem], elem }' 1.out 2.out 
于 2009-09-25T09:56:15.183 に答える
0

これは非常に特殊な問題であるため、デフォルトでこれを実行するツールはほとんどありません。任意のスクリプト言語 (sh を含む) で実装された、十分に小さいループ (awk の厄介さは必要ありません) でスクリプトを作成できます。他に方法はないと思います。

于 2009-09-25T12:24:43.233 に答える
0

これはそれほど深刻ではありません (ただし、機能します)。私はフィリップスのソリューションが好きです。

cat 1.out 2.out |
{
    while read line; do
        for i in $(seq ${line% *}); do
            echo ${line#* }
        done
    done
} | sort | uniq -c
于 2009-09-26T10:55:12.460 に答える