5

この (タブ区切りの) データの列を並べ替える必要があります。

   1 cat    plays
   1 dog    eats
   1 horse  runs
   1 red    dog
   1 the    cat
   1 the    cat

つまり、次のように出力されます。

cat plays   1
dog eats    1
horse   runs    1
red dog 1
the cat 2

私が試してみました:

sort [input] | uniq -c | awk '{print $2 "\t" $3 "\t" $1}' > [output]

結果は次のとおりです。

1   cat 1
1   dog 1
1   horse   1
1   red 1
2   the 1

何がうまくいかないのか、誰かが私に洞察を与えることができますか? ありがとうございました。

4

4 に答える 4

8

の出力cat input | sort | uniq -cは次のとおりです。

   1    1 cat    plays
   1    1 dog    eats
   1    1 horse  runs
   1    1 red    dog
   2    1 the    cat

次のようなものが必要です:

cat input | sort | uniq -c | awk '{print $3 "\t" $4 "\t" $1}'

また、awk で出力フィールドセパレーターを示すこともできます。

cat input | sort | uniq -c | awk -v OFS="\t" '{print $3,$4,$1}'
于 2013-09-22T17:10:23.840 に答える
3

uniq -c余分な列を追加します。これにより、必要な出力が得られるはずです。

$ sort file | uniq -c | awk '{print $3 "\t" $4 "\t" $1}'
cat     plays   1
dog     eats    1
horse   runs    1
red     dog     1
the     cat     2
于 2013-09-22T17:10:33.047 に答える