Podemos usar o awk com o gsub para obter a contagem de ocorrências.
awk '{print $0","gsub(/foo/,"")}' file
Saída:
foo,bar,foo,foo,3
bar,foo,bar,bar,1
foo,foo,bar,bar,2
Eu preciso imprimir a contagem de uma string correspondente no final de cada linha.
Um exemplo de correspondência de foo
:
foo,bar,foo,foo
bar,foo,bar,bar
foo,foo,bar,bar
Resultado:
foo,bar,foo,foo,3
bar,foo,bar,bar,1
foo,foo,bar,bar,2
Eu verifiquei este link ( Como contar o número de um caractere específico em cada linha? ) mas sem sorte.
Podemos usar o awk com o gsub para obter a contagem de ocorrências.
awk '{print $0","gsub(/foo/,"")}' file
Saída:
foo,bar,foo,foo,3
bar,foo,bar,bar,1
foo,foo,bar,bar,2
Talvez com uma mistura de bash
e grep
$ 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
No caso de alguém também querer algo em Python. Especifique o nome do arquivo e a palavra mágica para contar.
#!/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]))
Uso:
$ 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
Tags awk csv linux shell-script