
このようなファイルがあります。
a
A
b
c
大文字と小文字を区別せずに各行が繰り返される回数を印刷したいと思います。次のコマンドが役に立つと思いました。
tr A-Z a-z | uniq -c | sed -e 's/^ *//' -e 's/ *$//'
しかし、ファイル形式がA \n a
。2 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
オプションは大文字と小文字の違いを無視します。