Récupérer caractère
Résolu
rebel
-
rebel -
rebel -
Bonjour,
Je suis un peu noob sur linux alors mes excuses par avance pour mon manque de vocabulaire ^^
J'ai un fichier toto qui contient une liste formatée ainsi :
machineX process1 process2 process3 process4
machineY process1 process2 process3 process4
machineZ process1 process2 process3 process4
je souhaiterais, par exemple, récupérer que le nom de la machine avec son process2 via une ligne de commande
lorsque je fais:
cat toto | grep "process2"
il me sort toute la ligne :
machineX process1 process2 process3 process4
machineY process1 process2 process3 process4
machineZ process1 process2 process3 process4
moi je voudrais:
machineX process2
machineY process2
machineZ process2
Sauriez vous m'aider svp ?
Merci.
Je suis un peu noob sur linux alors mes excuses par avance pour mon manque de vocabulaire ^^
J'ai un fichier toto qui contient une liste formatée ainsi :
machineX process1 process2 process3 process4
machineY process1 process2 process3 process4
machineZ process1 process2 process3 process4
je souhaiterais, par exemple, récupérer que le nom de la machine avec son process2 via une ligne de commande
lorsque je fais:
cat toto | grep "process2"
il me sort toute la ligne :
machineX process1 process2 process3 process4
machineY process1 process2 process3 process4
machineZ process1 process2 process3 process4
moi je voudrais:
machineX process2
machineY process2
machineZ process2
Sauriez vous m'aider svp ?
Merci.
A voir également:
- Récupérer caractère
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Recuperer message whatsapp supprimé - Guide
- Caractere speciaux - Guide
- Caractere vide - Guide
3 réponses
Salut,
Il existe différents outils te permettant de faire ça comme sed ou awk.
Avec awk cela pourrait ressembler à ça sur un fichier toto.txt:
--> si la ligne contient la string "process2" alors afficher le 1er et le 3eme champs de cette ligne, la délimitation se faisant par défaut par l'espace.
--> Petite optim : pas de raison d'utiliser le pipe dans ton cas, awk prend en argument le fichier.
--> Pour finir, il peut être utile d'explicitement indiquer le délimiteur à utiliser via l'option -F
++
Il existe différents outils te permettant de faire ça comme sed ou awk.
Avec awk cela pourrait ressembler à ça sur un fichier toto.txt:
cat toto.txt |awk '/process2/ {print $1,$3}'
--> si la ligne contient la string "process2" alors afficher le 1er et le 3eme champs de cette ligne, la délimitation se faisant par défaut par l'espace.
awk '/process2/ {print $1,$3}' toto.txt
--> Petite optim : pas de raison d'utiliser le pipe dans ton cas, awk prend en argument le fichier.
awk -F ' ' '/process2/ {print $1,$3}' toto.txt
--> Pour finir, il peut être utile d'explicitement indiquer le délimiteur à utiliser via l'option -F
++
Hello et merci d'avoir pris le tps de me répondre,
En fait , ce que vous dites est juste mais ne correpsond pas à mon besoin (je me suis mal exprimé au départ).
Il faudrait faire une recherche de chaine de caractères par ligne.
"toto" ressemble en fait à :
machine1 reference process1*c:source process1*c:sink process2*abc process3*i:1 pmlo*i:2 process3*i:3
machine3 local process1*c:source process1*c:sink process2*i:1 process2*i:2 process2*i:3 process2*i:4 process2*i:5 process2*i:6
machine4 local process1*c:source process1*c:sink process2*i:1*source_dev process2*i:2*source2_dev process2*i:3 process3*i:3
machine5 local process1*c:source process1*c:sink process2*i:1 process2*i:2 process2*i:3 process2*i:4 process2*i:5
machine6 local process1*c:source process1*c:sink process2*i:1 process2*i:2 process3*i:3 process2*i:3 process2*i:4*source_dev
donc l'impression de colonne ne peut pas fonctionner car le "process3" n'est pas toujours à la même place.
Je ne sais pas si je suis bien clair alors n'hésitez pas à me dire ^^
Merci !
En fait , ce que vous dites est juste mais ne correpsond pas à mon besoin (je me suis mal exprimé au départ).
Il faudrait faire une recherche de chaine de caractères par ligne.
"toto" ressemble en fait à :
machine1 reference process1*c:source process1*c:sink process2*abc process3*i:1 pmlo*i:2 process3*i:3
machine3 local process1*c:source process1*c:sink process2*i:1 process2*i:2 process2*i:3 process2*i:4 process2*i:5 process2*i:6
machine4 local process1*c:source process1*c:sink process2*i:1*source_dev process2*i:2*source2_dev process2*i:3 process3*i:3
machine5 local process1*c:source process1*c:sink process2*i:1 process2*i:2 process2*i:3 process2*i:4 process2*i:5
machine6 local process1*c:source process1*c:sink process2*i:1 process2*i:2 process3*i:3 process2*i:3 process2*i:4*source_dev
donc l'impression de colonne ne peut pas fonctionner car le "process3" n'est pas toujours à la même place.
Je ne sais pas si je suis bien clair alors n'hésitez pas à me dire ^^
Merci !