Commande awk pour récupérer valeurs sur ligne
Résolu
marco.marco
Messages postés
29
Date d'inscription
Statut
Membre
Dernière intervention
-
marco.marco Messages postés 29 Date d'inscription Statut Membre Dernière intervention -
marco.marco Messages postés 29 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voilà mon problème: je récupère sous forme de variable ou de fichier des données du stype :
MACHIN001|MACHIN002|MACHIN003|MACHIN001|MACHIN006
MACHIN003|MACHIN007|
MACHIN008|MACHIN002|
etc...
donc sur plusieurs colonnes et plusieurs lignes avec un séparateur "|".
Ce que je voudrais faire c'est via une commande awk par exemple, lister toutes ces valeurs pour ne les avoir que sur une seule colonne :
MACHIN001
MACHIN002
MACHIN003
MACHIN004
MACHIN005
MACHIN006
...
(je terminerai mon awk par un " sort | uniq" pour virer les doublons)
Quelqu'un aurait-il la réponse ? Je sèche un peu...
Je travaille sous une machine unix.
Merci d'avance !!
Voilà mon problème: je récupère sous forme de variable ou de fichier des données du stype :
MACHIN001|MACHIN002|MACHIN003|MACHIN001|MACHIN006
MACHIN003|MACHIN007|
MACHIN008|MACHIN002|
etc...
donc sur plusieurs colonnes et plusieurs lignes avec un séparateur "|".
Ce que je voudrais faire c'est via une commande awk par exemple, lister toutes ces valeurs pour ne les avoir que sur une seule colonne :
MACHIN001
MACHIN002
MACHIN003
MACHIN004
MACHIN005
MACHIN006
...
(je terminerai mon awk par un " sort | uniq" pour virer les doublons)
Quelqu'un aurait-il la réponse ? Je sèche un peu...
Je travaille sous une machine unix.
Merci d'avance !!
A voir également:
- Commande awk pour récupérer valeurs sur ligne
- Invite de commande - Guide
- Comment recuperer un message supprimé sur whatsapp - Guide
- Partager photos en ligne - Guide
- Commande terminal mac - Guide
- Comment recuperer une video sur youtube - Guide
5 réponses
Salut,
Et avec "sed" ?
;-))
Et avec "sed" ?
jp@MDK:~/tmpfs ssh$ cat plop MACHIN001|MACHIN002|MACHIN003|MACHIN001|MACHIN006 MACHIN003|MACHIN007| MACHIN008|MACHIN002| jp@MDK:~/tmpfs ssh$ sed 's/|/\n/g' plop | sed '/^$/d' | sort -u MACHIN001 MACHIN002 MACHIN003 MACHIN006 MACHIN007 MACHIN008 jp@MDK:~/tmpfs ssh$
;-))
Salut,
lami20j@debian-acer:~$ cat plop MACHIN001|MACHIN002|MACHIN003|MACHIN001|MACHIN006 MACHIN001|MACHIN002|MACHIN003|MACHIN001|MACHIN006 MACHIN003|MACHIN007| MACHIN008|MACHIN002| lami20j@debian-acer:~$ sed 's/^|\|| *$//g;s/|/\n/g' plop |sort|uniq MACHIN001 MACHIN002 MACHIN003 MACHIN006 MACHIN007 MACHIN008 lami20j@debian-acer:~$
Merci Jipicy et lami20j !!!!
vous m'aviez déjà sauvé la vie le mois dernier avec une commande awk ;-)
\n : comment je n'y ai pas pensé !!!! je l'utilise dans tous mes shells (mais jamais avec un sed remarque)
Bon ca marche impec sous linux mais pas sur unix...
sous unix j'ai ca :
MACHIN001nMACHIN002nMACHIN003nMACHIN001nMACHIN006
Curieux... mais ce n'est pas grave du tout puisque de toute facon au final je vais l'utiliser sous un linux.
Encore merci à vous deux !
vous m'aviez déjà sauvé la vie le mois dernier avec une commande awk ;-)
\n : comment je n'y ai pas pensé !!!! je l'utilise dans tous mes shells (mais jamais avec un sed remarque)
Bon ca marche impec sous linux mais pas sur unix...
sous unix j'ai ca :
MACHIN001nMACHIN002nMACHIN003nMACHIN001nMACHIN006
Curieux... mais ce n'est pas grave du tout puisque de toute facon au final je vais l'utiliser sous un linux.
Encore merci à vous deux !
Re,
Bon ca marche impec sous linux mais pas sur unix...
Essai avec awk
Bon ca marche impec sous linux mais pas sur unix...
Essai avec awk
$ cat plop MACHIN001|MACHIN002|MACHIN003|MACHIN001|MACHIN006 MACHIN003|MACHIN007| MACHIN008|MACHIN002| $ awk -F"|" '{for(i=1;i<=NF;++i) if($i~/MACH/) print $i|"sort|uniq"}' plop MACHIN001 MACHIN002 MACHIN003 MACHIN006 MACHIN007 MACHIN008
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
Ou
Petit bonus avec perl ;-), qui normalement doit fonctionner sous unix
Ou
$ awk -F"|" '{for(i=1;i<=NF;++i) if(length($i)>1) print $i|"sort|uniq"}' plop MACHIN001 MACHIN002 MACHIN003 MACHIN006 MACHIN007 MACHIN008
Petit bonus avec perl ;-), qui normalement doit fonctionner sous unix
$ cat plop MACHIN001|MACHIN002|MACHIN003|MACHIN001|MACHIN006 MACHIN003|MACHIN007| MACHIN008|MACHIN002| $ perl -pe 's/\|\s*/\n/g' plop|sort|uniq MACHIN001 MACHIN002 MACHIN003 MACHIN006 MACHIN007 MACHIN008
Il faut gérer la ligne vide
Edit:
En fait quand j'ai fait copier coller il avait des espaces après le dernier |