Parsing de ligne ave awk
MArsdu13
-
Marsdu13 -
Marsdu13 -
Bonsoir,
J'ai un petit soucis qui me tient à coeur, j'ai dans un script shell une boucle qui lit un fichier et n'en affiche que le dernier élément, après éxecution ce n'est pas vraiment ce que je désire, en fait la taille des lignes est aléatoire et la seule chose fixe c'est que je veux tous les éléments qui suivent le 4ème élément jusq'au dernier : actuellement j'ai donc
file=$(echo "$ligne" |awk '{print $NF}')
mais j'aimerais avoir $5 jusqu'à $NF, y-a-t-il un moyen simple ou dois ajouter une condition dans ma boucle ?
Merci!!!
J'ai un petit soucis qui me tient à coeur, j'ai dans un script shell une boucle qui lit un fichier et n'en affiche que le dernier élément, après éxecution ce n'est pas vraiment ce que je désire, en fait la taille des lignes est aléatoire et la seule chose fixe c'est que je veux tous les éléments qui suivent le 4ème élément jusq'au dernier : actuellement j'ai donc
file=$(echo "$ligne" |awk '{print $NF}')
mais j'aimerais avoir $5 jusqu'à $NF, y-a-t-il un moyen simple ou dois ajouter une condition dans ma boucle ?
Merci!!!
A voir également:
- Parsing de ligne ave awk
- Partage de photos en ligne - Guide
- Mètre en ligne - Guide
- Aller à la ligne excel - Guide
- Formulaire en ligne de meta - Guide
- Site de vente en ligne particulier - Guide
4 réponses
tu tiens à ce que ce soit par awk ?
parce que cut s'y prête très bien
si ton délimiteur est un espace mettons
cut -d' ' -f5- <<<"pim pam toc plouf grouik zou tac"
grouik zou tac
bon si le délimiteur est de longueur variable ça se complique...
parce que cut s'y prête très bien
si ton délimiteur est un espace mettons
cut -d' ' -f5- <<<"pim pam toc plouf grouik zou tac"
grouik zou tac
bon si le délimiteur est de longueur variable ça se complique...
Salut,
voici avec sed et awk
lami20j
voici avec sed et awk
file=$(echo pim pam toc plouf grouik zou tac | awk 'BEGIN{ORS=" "}{for(i=5;i<=NF;++i) print $i}') echo $file grouik zou tac file1=$(echo pim pam toc plouf grouik zou tac | sed -r 's/^([a-z]+\s*){4}//') echo $file1 grouik zou tac--
lami20j
Salut,
Ou en shell pur :
Ou en shell pur :
$ file="pim pam toc plouf grouik zou tac" $ echo $file pim pam toc plouf grouik zou tac $ set $file $ echo $* pim pam toc plouf grouik zou tac $ shift 4 $ echo $* grouik zou tac $;-))
Merci beaucoup, la première réponse de tagadazou était un peu moins bonne car effectivement j'avais plusieurs espaces, mais la faute vient de moi car je ne précise pas grand chose dans ma question...
La 2ème est celle que je pensais chercher, la troisième est surprenante car je ne la connaissais pas, j'ignorais le shift que je connaissais en PERL...
Bravo donc à tous et merci...!
La 2ème est celle que je pensais chercher, la troisième est surprenante car je ne la connaissais pas, j'ignorais le shift que je connaissais en PERL...
Bravo donc à tous et merci...!