Fonction grep dans une if
Résolu
PhillipeG
-
PhillipeG -
PhillipeG -
Bonjour,
je débute en shell et je suis un peu perdu depuis quelques heures. Je possède un fichier text avec 1 colonne de nombre. Ces nombres apparaissent entre 0 et 2 fois et je voudrais effectuer une action en fonction du nombre de leur apparition. J'ai fait un programme avec la fonction grep -c mais cela ne fonctionne pas et je pense que c'est une erreur de structure de ma part mais je ne vois pas.
Voici le programme:
je vous remercie d'avance.
je débute en shell et je suis un peu perdu depuis quelques heures. Je possède un fichier text avec 1 colonne de nombre. Ces nombres apparaissent entre 0 et 2 fois et je voudrais effectuer une action en fonction du nombre de leur apparition. J'ai fait un programme avec la fonction grep -c mais cela ne fonctionne pas et je pense que c'est une erreur de structure de ma part mais je ne vois pas.
Voici le programme:
last_number=$(tail -1 test.txt) for ((i=0 ; $last_number - $i ; i++)) do if [ "grep -c ^$i$ test.txt" -eq 2];then echo "$i: twice" >> settings.txt elif [ "grep -c ^i$ test.txt" -eq 1]; then echo "$i: once" >> settings.txt else echo "$i non présent" >> settings.txt fi done
je vous remercie d'avance.
A voir également:
- Linux if grep
- Linux reader - Télécharger - Stockage
- Toutou linux - Télécharger - Systèmes d'exploitation
- R-linux - Télécharger - Sauvegarde
- Backtrack linux - Télécharger - Sécurité
- Linux mint 22.1 - Accueil - Linux
2 réponses
salut,
le deuxième argument de l'évaluation arithmétique de l'instruction
quelle est la condition pour arrêter la boucle ?
dans les
vous écrivez vos codes d'un trait sans tester pas à pas ?
avant de courir, ... !!!
le deuxième argument de l'évaluation arithmétique de l'instruction
forne peut pas être un calcul.
quelle est la condition pour arrêter la boucle ?
dans les
if,
grepdoit être dans une substitution de commande, et il faut respecter les espaces.
vous écrivez vos codes d'un trait sans tester pas à pas ?
avant de courir, ... !!!
Salut,
On peut voir la tronche de ton fichier d'entrée (test.txt) s'il te plaît ?
Il y a tellement d'erreurs et d'incohérences que je ne pense pas que ça puisse fonctionner ;-\
On peut voir la tronche de ton fichier d'entrée (test.txt) s'il te plaît ?
tout fonctionne cependant je n'ai pas le résultat souhaité
Il y a tellement d'erreurs et d'incohérences que je ne pense pas que ça puisse fonctionner ;-\
$ cat foo.sh
#! /bin/bash #set -x last_number=$(tail -1 plop) for ((i=0 ; ${last_number} - ${i} ; i++)) do if [ "$(grep -c ^${i}$ plop)" -eq 2 ];then echo "${i} : twice" >> settings.txt elif [ "$(grep -c ^${i}$ plop)" -eq 1 ]; then echo "${i} : once" >> settings.txt else echo "${i} non présent" >> settings.txt fi done
$ ./foo.sh
$ cat settings.txt
0 non présent
1 : twice
2 non présent
3 : once
4 : once
5 : once
6 : twice
7 non présent
8 non présent
9 non présent
10 non présent
11 non présent
12 : once
13 : twice
PS. plop c'est le nom de mon fichier contenant les données (test.txt chez toi)
La c'est vraiment le grep qui pose problème mais je n'arrive pas à corriger mon erreur.