web-dev-qa-db-ja.com

各行のパターンの数を印刷するにはどうすればよいですか?

各行の終わりに一致する文字列の数を出力する必要があります。

fooのマッチングの例:

foo,bar,foo,foo
bar,foo,bar,bar
foo,foo,bar,bar

結果:

foo,bar,foo,foo,3
bar,foo,bar,bar,1
foo,foo,bar,bar,2

このリンクをチェックしました( 各行の特定の文字の数を数える方法は? )が、運がありません。

4
user307425

Awkとgsubを使用して、発生回数を取得できます。

 awk '{print $0","gsub(/foo/,"")}' file

出力:

foo,bar,foo,foo,3
bar,foo,bar,bar,1
foo,foo,bar,bar,2
9
Siva

おそらくbashgrepが混在している

$ while read -r line; do 
    echo -n "$line -> " 
    grep -o foo <<<"$line" | wc -l 
  done < /path/to/my-input-file

foo,bar,foo,foo -> 3
bar,foo,bar,bar -> 1
foo,foo,bar,bar -> 2
1
shalomb

誰かがPythonで何かを欲しがった場合に備えて。カウントオーバーするファイル名と魔法の単語を指定します。

#!/usr/bin/python3
# magic_Word_count.py
# Takes a filename and magic Word and prints the number of times the Word
# appears on each line of the file.
#
# ./magic_Word_count.py myfile.txt foo
#
import sys 
filename = sys.argv[1]
magic_Word = sys.argv[2]

with open(filename, 'r') as f:
    for line in f.readlines():
        words = line.strip().split(',')
        print(len([Word for Word in words if Word == magic_Word]))

使用法:

$ cat myfile.txt 
foo,bar,foo,foo
bar,foo,bar,bar
foo,foo,bar,bar

$ ./magic_Word_count.py myfile.txt foo
3
1
2
0
user1717828