大文字と小文字を区別せずに各行が繰り返される回数を計算します。

大文字と小文字を区別せずに各行が繰り返される回数を計算します。

このようなファイルがあります。

a
A
b
c

大文字と小文字を区別せずに各行が繰り返される回数を印刷したいと思います。次のコマンドが役に立つと思いました。

tr A-Z a-z | uniq -c | sed -e 's/^ *//' -e 's/ *$//'

しかし、ファイル形式がA \n a2 aただし、予想される結果は次のとおりです。2 A

どうすればいいですか?

ベストアンサー1

sort最初にコマンドを使用する前に、まず使用する必要があります。uniq -c入力など、他の文字の後に別の繰り返し文字があると、コマンドが失敗するためです。

a
A
b
c
A
a
a

2番目の問題は、すべての大文字を小文字に変換して結果が小文字に変わるため、誤った結果が出ることです。

's/ *$//'また、出力に末尾のスペースがないため、sed部分は必要ありません。

次のように修正されたコマンドを試してください。

tr a-z A-Z <file |sort | uniq -c | sed 's/^ *//'

またはより短い試み:

sort -r file |uniq -ci

sortこの-rオプションは大文字を最初の行にソートします。 withuniqとその-iオプションは大文字と小文字の違いを無視します。

おすすめ記事