Récupérer caractère
Résolu/Fermé
A voir également:
- Récupérer caractère
- Caractère ascii - Guide
- Recuperer message whatsapp supprimé - Guide
- Caractere speciaux - Guide
- Recuperer video youtube - Guide
- Caractère spéciaux - Guide
3 réponses
chris79
Messages postés
97
Date d'inscription
lundi 3 octobre 2005
Statut
Membre
Dernière intervention
1 février 2016
25
1 févr. 2016 à 21:18
1 févr. 2016 à 21:18
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
++
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
2 févr. 2016 à 11:04
2 févr. 2016 à 11:04
hello
$ cut -d ' ' -f 1,3 fichier
machineX process2
machineY process2
machineZ process2
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 !
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
Modifié par dubcek le 4/02/2016 à 11:16
Modifié par dubcek le 4/02/2016 à 11:16
que faut-il extraire de ce fichier ?
ca ?
ca ?
$ awk -v c="process3" '$0 ~ c {printf $1 " "; for (n=2; n<=NF; n++)if($n ~ c)printf $n " "; print ""}' fichier
machine1 process3*i:1 process3*i:3
machine4 process3*i:3
machine6 process3*i:3
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
4 févr. 2016 à 11:18
4 févr. 2016 à 11:18
j'ai modifié mon post précédent
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
4 févr. 2016 à 11:28
4 févr. 2016 à 11:28
$ awk -v c="process3" '$0 ~ c {printf $1 " "; for (n=2; n<=NF; n++)if($n ~ c)p=$n; print p}' fichier
machine1 process3*i:3
machine4 process3*i:3
machine6 process3*i:3
rebel
>
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
Modifié par rebel le 4/02/2016 à 11:43
Modifié par rebel le 4/02/2016 à 11:43
T'es une star !
Merci beaucoup, ca fait presque le job :)
Mais comment faire pour qu'il ne s'arrete pas à la 1ere occurence ?
Si j'ai sur une ligne :
machineX process1 process3 process3.A process4 process3.B
pour récupérer:
machineX process 3 process 3.A process3.B
?
Merci !!
Merci beaucoup, ca fait presque le job :)
Mais comment faire pour qu'il ne s'arrete pas à la 1ere occurence ?
Si j'ai sur une ligne :
machineX process1 process3 process3.A process4 process3.B
pour récupérer:
machineX process 3 process 3.A process3.B
?
Merci !!