Bonjour,
j'aimerai compter le nombre d’occurrences de chaque mots dans un fichier texte, par exemple le suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Kandro@linux:~$ cat truc
de monde depuis
de
monde
depuis
Lorsque j'exécute le script :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
 
for mot in $(cat truc)                    
do                                            
	grep -o "$mot" truc > compteur   
 
	set `wc -l compteur `
 
	if [ $1 -gt 0 ]
	then 
		echo "$mot : $1">>mots
		sed 's/'$mot'/ /g' truc > txttemp
		cat txttemp>truc
	fi
done
j'obtiens

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Kandro@linux:~$ cat mots
de : 6
Kandro@linux:~$ cat truc
  mon   puis
 
mon 
 puis
J'ai essayé de palier à ce problème en faisant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for mot in $(cat truc)                    
do                                            
	grep -o "$mot" truc > compteur   
 
	set `wc -l compteur `
 
	if [ $1 -gt 0 ]
	then 
		echo "$mot : $1">>mots
		sed 's/[[:space:]]'$mot'[[:space]]/ /g' truc > txttemp
		sed 's/^'$mot'[[:space]]/ /g' txttemp>truc
		sed 's/[[:space:]]'$mot'$/ /g' truc > txttemp
		sed 's/^'$mot'$/ /g' txttemp>truc
	fi
done
Mais là le terminal me dit qu'il y a une erreur de syntaxe dans sed, et je n'arrive pas à la retrouver.