テキストファイルがいくつかありますが、それぞれに文字が表示される回数を数えたいですか?
具体的には、UNIXシェルを使用して、次の形式でこれを実行したいと思います。....何かをする...
これを行うためにwcコマンドを取得する方法はありますか?
テキストファイルがいくつかありますが、それぞれに文字が表示される回数を数えたいですか?
具体的には、UNIXシェルを使用して、次の形式でこれを実行したいと思います。....何かをする...
これを行うためにwcコマンドを取得する方法はありますか?
grep char -o filename | wc -l
別の選択肢:
tr -d -C X <infile | wc -c
ここで、Xはカウントする文字または文字列であり、infileは入力ファイルです。
grepの代替:
sed 's/[^x]//g' filename | tr -d '\012' | wc -c
x
カウントしたい文字はどこですか。
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つだけカウントする必要があります)。
awk '{ printf "%s\n", gsub( "ur_char", "oth_char", $0 ) }' < your_file_name > output.txt
現在の行番号のカウントを追加して、awkの行番号を取得することもできます。
エコー"a/ b / c / d / e / f / g" | awk -F "/"'{print NF}'
これにより、文字「/」の出現回数がわかります。
この場合、私は文字「|」を数えています:
expr `wc -c < filename` \- `tr -d \| < filename | wc -c`
簡単に試すことができます:
grep -c 'YOUR LETTER' YOUR FILE
これが別の方法です
cat input_file | \
awk 'BEGIN {FS="x"; var=0 } \
{if (NF>0){ var=var + (NF-1) } } \
END{print var}'
ここで、Xはカウントする文字または文字列であり、infileは入力ファイルです。
で試してみてください
grep [PATTERN] -o [FILE] | wc -l
必要のない場合は猫を使用しないでください。