cut et grep [résolu] - Shell/Batch - Programmation
Marsh Posté le 06-10-2013 à 23:41:56
L'utilitaire grep a une option -v qui fait ça.
Par exemple pour avoir le fichier sans la ligne contenant Paul, faire :
grep file -v Paul >newfile |
Edit : Oups, j'ai mal lu la question.
Pour conserver des lignes contenant une ou plusieurs chaines de caractères particulières, utiliser egrep.
Par exemple pour avoir le fichier avec seulement les lignes Paul, Judith, et Théo :
egrep "Paul|Judith|Theo" file >newfile |
Marsh Posté le 07-10-2013 à 01:27:34
Merci olivthill.
Mon souci est en fait d'automatiser le truc et de remplacer les Paul|Judith|Theo par des variables, pour pouvoir appeler le programme tel que je l'ai mentionné plus haut .
Marsh Posté le 07-10-2013 à 08:24:20
!
Tu as la solution suivante (à ne pas conseiller je pense ) : tu remplaces toutes les virgules de ton argument par la chaîne suivante : " \\\|^", ce qui donne :
Code :
|
Par contre je n'ai pu tester que sur Cygwin, mais ça marche
Marsh Posté le 07-10-2013 à 08:44:38
ou
egrep "$2|$3|$4" $1 >$FILENAME |
Marsh Posté le 07-10-2013 à 12:06:49
olivthill a écrit : ou
|
Ça me parait plus propre en effet
Par contre le nombre d'arguments est variable, donc j'ai fait plutôt ceci :
Code :
|
Merci à vous !
Marsh Posté le 06-10-2013 à 14:43:47
Bonjour.
Je voudrais créer un script qui conserve les lignes d'un fichiers qui commencent par l'un des mots spécifié par l'utilisateur.
Exemple :
$more file
Paul a 15 ans
Henry a 13 ans
Judith a 7 ans
Théo a 5 ans
$sh ./monscript file Paul,Judith,Théo
$more file
Paul a 15 ans
Judith a 7 ans
Théo a 5 ans
Pour l'instant, j'ai pu faire :
echo $(cut $2 -d"," -f1)
qui sépare les mots du 2eme argument
cat $1 | grep '\(^Paul\|^Judith\|^Théo\)' > $FILENAME
qui crée un fichier avec uniquement les lignes qui m'intéressent.
Mais je ne sais pas comment associer les 2.
Merci à vous !
Message édité par natha31 le 07-10-2013 à 12:07:26