exemplo: tenho um arquivo a.txt
que contém o seguinte:
aunt bear bear true
Eu também tenho um arquivo b.txt
que contém o seguinte:
tru tru high
o resultado final que quero é:
for a.txt : bear x 2
for b.txt : tru x 2
Até agora, só consigo pensar nisso:
cut -d ' ' -f1 file.txt | sort | uniq -c | head -1
Estou sem ideias
A classificação precisa ser feita nos arquivos; esclarecimento: ao introduzir os arquivos c.txt b.txt y.txt o conteúdo de b deve ser o primeiro e o conteúdo de y por último
Responder1
Aqui está uma abordagem simples e rápida que deve funcionar para nomes e conteúdos de arquivos arbitrários:
$ for file in a.txt b.txt ; do
printf 'for %s : %s\n' "$file" "$(tr ' ' '\n' < "$file" | sort | uniq -dc)";
done
for a.txt : 2 bear
for b.txt : 2 tru
Ou, se você realmente precisaexatamenteo formato que você mostra:
$ for file in a.txt b.txt ; do
printf 'for %s : %s x %s\n' "$file" \
$(tr ' ' '\n' < "$file" | sort | uniq -dc | awk '{print $2,$1}');
done
for a.txt : bear x 2
for b.txt : tru x 2
Responder2
$ for i in $(cat a.txt); do echo $i; done | sort | uniq -c | sort -g | tail -1
2 bear
roteiro:
$ cat topword.sh
#!/bin/bash
FILENAMES=$@
for file in $@; do
printf "$file:"
cat $file | tr ' ' '\n' | sort | uniq -c | sort -g | tail -1
done
Saída:
$ bash topword.sh a.txt b.txt
a.txt: 2 bear
b.txt: 2 tru
Agora, aqui está uma tarefa para você: faça um roteiro bonito e de fácil leitura com este rascunho que lhe dei;)
Responder3
Um simples comando awk fará a mágica aqui
Primeiro passo, pois precisamos calcular quantas vezes uma determinada palavra ocorre em um arquivo
etapa 1: Criando um novo arquivo de entrada com base no arquivo de entrada
cat input file |sed -r "s/\s+/\n/g" >inputfile_final.txt
Passo 2: Agora o comando awk simples com array associado fará mágica agora
awk '{a[$1]++}END{for(x in a){print FILENAME, x,a[x]}}' inputfile_final.txt | sort -k3 -nr| sed -n '1p'| awk '{print "for" " " $1 " " ":" $2 " " "x" " " $NF}'
saída
for inputfile_final.txt :bear x 2
Note: I have done for 1 file same method we can follow for remaining files too