Script shell assez compliqué mais pas trop
Fermé
Antiloft
-
10 oct. 2012 à 23:26
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 - 15 oct. 2012 à 10:23
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 - 15 oct. 2012 à 10:23
A voir également:
- Script shell assez compliqué mais pas trop
- Script vidéo youtube - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
- Vous ne pouvez pas récupérer votre compte pour le moment, car google n'a pas assez d'informations pour s'assurer que ce compte vous appartient. - Guide
- Ghost script - Télécharger - Polices de caractères
- Microsoft activation script - Accueil - Windows
4 réponses
Utilisateur anonyme
11 oct. 2012 à 05:44
11 oct. 2012 à 05:44
salut,
sed n'est pas un outil bash, c'est un programme à part entière.
je travaille avec des entrées-sorties c'est mieux)
non, dans ton cas, le mieux serait de passer les mots en arguments au script.
moi, je ferais un script awk:
remplacer les virgules par une barre verticale,
tester le premier mot de la ligne contre la regex précédemment créée
etc
sed n'est pas un outil bash, c'est un programme à part entière.
je travaille avec des entrées-sorties c'est mieux)
non, dans ton cas, le mieux serait de passer les mots en arguments au script.
moi, je ferais un script awk:
remplacer les virgules par une barre verticale,
tester le premier mot de la ligne contre la regex précédemment créée
etc
Salut,
S'il existe des méthodes toutes faites, à mon avis elles ne feront pas grand chose d différents avec ce que tu décris (isoler chaque mot et comparer).
Pour ma part pour la comparaison je ferais un test sur une commande du genre :
On peut améliorer en forçant la prise en compte de l'espace (de tête je sais plus comment)
S'il existe des méthodes toutes faites, à mon avis elles ne feront pas grand chose d différents avec ce que tu décris (isoler chaque mot et comparer).
Pour ma part pour la comparaison je ferais un test sur une commande du genre :
grep ^mot1 monfichier
On peut améliorer en forçant la prise en compte de l'espace (de tête je sais plus comment)
Salut,
Effectivement sed n'est pas un outils bash, je voulais parler de bash en général avec ses programmes populaires installés par défaut comme sed. Le choix des entrées-sorties c'est pour ne pas être limité par la taille de l'argument que je passe à mon script.
Mais on peut partir sur une solution avec des arguments si c'est vraiment meilleur.
Dans ce cas je pourrais faire un for sur ${1//","/" "} pour traiter chaque mot et reconstruire ma liste modifiée au fur à mesure.
Mais comment remplacer les mots par leur correspondance dans le fichier ,uniquement s'il y a correspondance.
?
Effectivement sed n'est pas un outils bash, je voulais parler de bash en général avec ses programmes populaires installés par défaut comme sed. Le choix des entrées-sorties c'est pour ne pas être limité par la taille de l'argument que je passe à mon script.
Mais on peut partir sur une solution avec des arguments si c'est vraiment meilleur.
Dans ce cas je pourrais faire un for sur ${1//","/" "} pour traiter chaque mot et reconstruire ma liste modifiée au fur à mesure.
Mais comment remplacer les mots par leur correspondance dans le fichier ,uniquement s'il y a correspondance.
?
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
11 oct. 2012 à 10:15
11 oct. 2012 à 10:15
hello
avec awk
avec awk
$ cat a2 mot1 correspondance1 mot2 correspondance2 $ $ awk -F, 'NR==FNR{split($0, a, " *"); t[a[1]]=a[2]; next} {for(n=1; n<=NF; n++){n==NF? c="\n" :c=FS; cc=$n; if(t[$n])cc=t[$n]; printf cc c}}' a2 <(echo "mot1,mot2,mot3") correspondance1,correspondance2,mot3 $ $
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
15 oct. 2012 à 10:23
15 oct. 2012 à 10:23
n est le numéro du champ et $n est son contenu