0

ファイル内の個別の文字を判別する Linux/UNIX コマンドを探しています。文字数はいいでしょうが、必須ではありません。たとえば、このデータを含むファイルに対してコマンドを実行すると...

This is
my data
file.

...これを出力として提供します...

T h i s m y d a t f l e .

...またはさらに良いことに、これ。

T:1 h:1 i:3 s:2 m:1 y:1 d:1 a:2 t:1 f:1 l:1 e:1 .:1

出力では、文字の順序は重要ではなく、スペース、タブ、行などで区切られているかどうかも重要ではありません。

4

2 に答える 2

2

固有の文字を印刷するには:

$ grep -o . file | sort -u | tr -d '\n'
 .Tadefhilmsty

各文字の出現回数をカウントするには:

$ grep -o . file | sort | uniq -c
      2
      1 .
      1 T
      2 a
      1 d
      1 e
      1 f
      1 h
      3 i
      1 l
      1 m
      2 s
      1 t
      1 y

整形はお任せします。

于 2012-11-08T15:14:11.627 に答える
1

それを行うUNIXコマンドは知りませんが、小さなpythonスクリプトで必要なものを取得することは可能です

#!/usr/bin/env python

import collections, sys
d = collections.defaultdict(int)
for line in sys.stdin:
    for c in line:
        d[c] += 1
print dict(d)

結果が得られます

{'a': 2, ' ': 2, 'e': 1, 'd': 1, 'f': 1, 'i': 3, 'h': 1, '\n': 2, 'm': 1, 'l': 1, '.': 1, 's': 2, 'T': 1, 'y': 1, 't': 1}
于 2012-11-08T15:12:00.477 に答える