Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#1 Le 08/05/2013, à 09:54

sab113

utiliser plusieurs commandes shell en même temps? [Résolu]

Bonjour à tous,


J'amerais savoir comment procéder pour pouvoir récupérer à partir d'un fichier txt certaines lignes et certaines colonnes en même temps.

J'ai un fichier avec ce format:

<DOC>    titreA00.txt
0|C|TERME1|0,0000
1|C|TERME2|0,0000
2|C|TERME3|0,0000

<DOC>    titreA01.txt
0|C0282423|TERME4|0,0000
1|C0000877|TERME5|0,0000

<DOC>    titreA02.txt
0|C0012634|TERME6|0,0000
1|C0031208|TERME7|0,0000

<DOC>    titreA03.txt
0|C0004083|TERME8|0,0000
1|C0887950|TERME9|0,0000
2|C0030567|TERME10|0,0000
3|C0007806|TERME11|0,0000
4|C0002716|TERME12|0,0000

Et je voudrais récupérer les lignes commençant avec la balise <DOC> mais également toutes les colonnes numéro 3.

Soit je fais :

 awk -F "|" '{print $3}' fichier.txt

pour récupérer toutes les colonnes numéro 3
et

sed -n '/<DOC>/p' fichier.txt  

Mais je ne sais pas comment faire pour pouvoir utiliser ces deux commandes en même temps et avoir un résultat ur un seul fichier comme suit

<DOC>    titreA00.txt
TERME1
TERME2
TERME3

<DOC>    titreA01.txt
TERME4
TERME5

<DOC>    titreA02.txt
TERME6
TERME7

<DOC>    titreA03.txt
TERME8
TERME9
TERME10
TERME11
TERME12

Je vous remercies à l'avance.]

Dernière modification par sab113 (Le 08/05/2013, à 10:43)

Hors ligne

#2 Le 08/05/2013, à 10:28

Postmortem

Re : utiliser plusieurs commandes shell en même temps? [Résolu]

Salut,

awk -F '|' '/<DOC>/ {print} {print $3}' fichier

Edit :
Pour éviter les lignes vides et en un peu plus court :

awk -F '|' '/<DOC>/;$3 {print $3}' fichier

Re-edit :
Pour garder les lignes vides s'il y en a à l'origine :

awk -F '|' '/<DOC>/ || /^$/;$3 {print $3}' fichier

Dernière modification par Postmortem (Le 08/05/2013, à 10:38)


Trusty Tahr (64 bits), Athlon64 3800+, ATI Radeon HD4870

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#3 Le 08/05/2013, à 10:41

sab113

Re : utiliser plusieurs commandes shell en même temps? [Résolu]

Je te remercies Postmortem pour ton aide smile

Dernière modification par sab113 (Le 08/05/2013, à 10:41)

Hors ligne

Haut de page ↑