2

いくつか質問がありますが、見つからず、スクリプトに適切な並べ替えを実装する方法がわかりません。入力文字列の一部を並べ替えて、冗長性(いくつかの繰り返し)を示し、これから最大の繰り返しの行を返します。たとえば、同じ繰り返しがさらにある場合

入力:

qwe1
qwe1
wer2
wer2
wer4

output: // 欲しいもの

2 qwe1 
input:
asd1
asd1
asd1
asd2
asd2
asd2
asd3
asd3
asd3
output: // What i want
3 asd1  // If I have a the same name return id of alphabeticall first 

#!/bin/bash
sort -n|uniq -c -i | sort -dr | head -n1

他の種類の引数をいくつか試しましたが、解決策が見つかりませんでした。

私の英語で申し訳ありませんが、誰かがこれを手伝ってくれますか?

4

4 に答える 4

3

これはあなたのために働くかもしれません:

 sort | uniq -c | sort -nrs | head -1
于 2012-05-03T16:52:08.620 に答える
1
sort | uniq -c | sort -k1nr -k2 | head -1

ここ-k1nrで、最初の列を数値順にソートし、逆方向 (高から低)
-k2意味し、最初のキーが等しい場合、列 2 (アルファベット順) でソートすることを意味します。

于 2012-05-03T16:49:25.983 に答える
0
sort | uniq -c | sort -nr | awk '{if(a&&a!=$1){print a,b;exit;}a=$1;b=$2}'
于 2012-05-03T16:37:27.300 に答える
0

これはすべて、1 つの awk コマンドで実行できると思います。このことを考慮:

awk '{freq[$0]++;} END {for (var in freq)
{if (freq[var]>max || (freq[var]==max && var < item)) 
{max=freq[var]; item=var} } print max, item; }' file.txt
于 2012-05-03T16:55:51.783 に答える