40

テキストファイルがいくつかありますが、それぞれに文字が表示される回数を数えたいですか?

具体的には、UNIXシェルを使用して、次の形式でこれを実行したいと思います。....何かをする...

これを行うためにwcコマンドを取得する方法はありますか?

4

10 に答える 10

47
grep char -o filename | wc -l
于 2009-09-02T15:59:50.983 に答える
13

別の選択肢:

tr -d -C X <infile | wc -c

ここで、Xはカウントする文字または文字列であり、infileは入力ファイルです。

于 2009-09-02T17:04:17.533 に答える
1

grepの代替:

sed 's/[^x]//g' filename | tr -d '\012' | wc -c

xカウントしたい文字はどこですか。

于 2009-09-02T16:12:17.713 に答える
1

awkもあります:

$ echo -e "hello world\nbye all" | awk -Fl '{c += NF - 1} END {print c}'
5

に変更-Fl-F<your character>ます。

これは、フィールド区切り文字をで指定された文字に設定し、-F各行のフィールド数を累積することで機能します-1(区切り文字が1つある場合、フィールドは2つありますが、1つだけカウントする必要があります)。

于 2009-09-02T16:21:30.927 に答える
1
awk '{ printf "%s\n", gsub( "ur_char", "oth_char", $0 ) }' < your_file_name > output.txt

現在の行番号のカウントを追加して、awkの行番号を取得することもできます。

于 2012-08-29T15:50:30.080 に答える
1

エコー"a/ b / c / d / e / f / g" | awk -F "/"'{print NF}'

これにより、文字「/」の出現回数がわかります。

于 2013-07-10T13:38:05.303 に答える
1

この場合、私は文字「|」を数えています:

expr `wc -c < filename` \- `tr -d \| < filename | wc -c`
于 2015-02-26T16:29:34.033 に答える
1

簡単に試すことができます: grep -c 'YOUR LETTER' YOUR FILE

于 2017-08-21T13:58:27.513 に答える
0

これが別の方法です

cat  input_file | \
awk 'BEGIN {FS="x"; var=0 } \
{if (NF>0){ var=var + (NF-1) } } \
END{print var}'

ここで、Xはカウントする文字または文字列であり、infileは入力ファイルです。

于 2012-07-12T06:33:49.247 に答える
0

で試してみてください

grep  [PATTERN] -o [FILE] | wc -l

必要のない場合は猫を使用しないでください。

于 2009-09-02T16:02:52.553 に答える