web-dev-qa-db-ja.com

UNIXシェルを使用して、テキストファイルに文字が表示される回数をカウントするにはどうすればよいですか?

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

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

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

36
samoz
grep char -o filename | wc -l
44
SilentGhost

別の選択肢:

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

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

12
Scott Lindsay

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

これは、文字「/」の出現回数を示します

1
aravinda
awk '{ printf "%s\n", gsub( "ur_char", "oth_char", $0 ) }' < your_file_name > output.txt

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

1
dantesan

Grepの代替:

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

ここで、xはカウントする文字です。

1
hlovdal

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

1
Alfredo Mari

この場合、文字「|」をカウントしています:

expr `wc -c < filename` \- `tr -d \| < filename | wc -c`
1
Vinicius

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のみカウントする必要があります)。

1
Mark Rushakoff

で試してみてください

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

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

0

別の方法があります

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

xはカウントする文字または文字列で、infileは入力ファイルです

0
user1011046