Shell couper une chaine de caracteres

Fermé
nabsterrier - 14 janv. 2009 à 13:47
xuge Messages postés 15 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 14 janvier 2009 - 14 janv. 2009 à 17:00
Bonjour à tous,

Je fais appel à vous pour un petit soucis dans mon script shell qui commence vraiment à m'énerver :

- Je ne trouve pas comment je peux mettre dans une variable chaque premier mot d'un fichier texte.
Du genre :
variable1 = premier mot de la premiere ligne
variable2 = premier mot de la deuxieme ligne
variable3 = premier mot de la troisième ligne.
...etc...

Je part du principe que je dois constituer une boucle qui lit l'intégralité de mon fichier ligne par ligne, où chaque premier mot de la ligne correspondra à une variable.
Dans ce cas là, le séparateur sera l'espace.

Quel commande puis-je utiliser ? cut (dont le man est incompréhensible) ? awk ?

Pouvez-vous m'aider pleasssssse?

Merci.
A voir également:

5 réponses

xuge Messages postés 15 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 14 janvier 2009 5
14 janv. 2009 à 14:11
Je ne sais pa si ç'est ce que tu veux.

Avec awk tu peux récupérer la première colonne de ton fichier et la coller dans un autre :

awk '{print $1}' toto>titi

$1 peut devenir $2, $3 etc suivant la colonne désirée.

Il suffit ensuite de lire ton fichier et d'attribuer la valeur à ta variable.
C'était bien ça la question?
1
xuge Messages postés 15 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 14 janvier 2009 5
14 janv. 2009 à 15:55
export name=`awk '{print $1}' toto`
for k in $name
do
.......
done

Comme ça "k" balaye toutes les valeurs et il ne suffit plus qu'à coller tout ça dans une variable. et pourquoi pas dans une variable qui a un nom qui évolue (avec un compteur par exemple)...
1
xuge Messages postés 15 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 14 janvier 2009 5
14 janv. 2009 à 17:00
Le 'export' c'est la façon propre d'attribuer une valeur à une variable: dans ce cas la première colonne du fichier.
Il est possible de le faire sans le export mais dans ce cas la variable ne sera pas accessible pour des sous-shell.

Le $1 signifie pour la commande awk la première colonne.
Donc comme je disais plus haut, si tu met $2, ce sera la deuxième colonne, $3 la troisième , et ainsi de suite.

Ici tu troueras un descriptif des commandes shell :
http://gershwin.ens.fr/vdaniel/Doc-Locale/Outils-Gnu-Linux/Linux_Doc/Unix-BournShell/node17.html

Et ici une aide pour awk et aussi le shell : http://www.shellunix.com/awk.html
1
Le truc c'est que j'ai un fichier de la forme :
192.168.12.12 BLABLABLABLAB
192.168.12.13 BLABLABLABLA
192.168.12.14 BLABLABLA

ce que je veux faire est de lire chaque ligne de facon a récupérer les adresses ip dans autant de variable qu'il y a de ligne...

Peut-etre avec la commande cut, mais je trouve cela un peu conpliqué pour moi...

Avez-vous une idée ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci xuge sa marche!!!!

Par contre, peux-tu me traduire ce bout de code stp ?
En faite, je ne comprend pas à quoi correspond le print $1 par exemple ou le export.

En tout cas, je te remercie.

Nabsterrier
0