Aide pour une commande AWK (ou SED) (ou autre)

Aide pour une commande AWK (ou SED) (ou autre) - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 12-12-2008 à 11:56:46    

Bonjour a tout le monde,
 
J'ai besoin d'aide svp :)
j'ai un fichier texte de 57Mo. Celui ci contient des informations sur des fichiers que je dois effacer sur un NAS.  
Chaque ligne de ce fichier comporte 9 champs, separes par une tabulation :
"NomFichier"     "Truc"     "Truc"     "Truc"     "Truc"     "Truc"     "Truc"     "Truc"     "CheminFichier"     "Truc"
 
je cherche une solution pour enlever enlever tous les champs "Truc" pour ne garder que les champs 1 et 8.
Apres, je chercherai une "moulinette" pour faire un couper/coller de ces fichiers sur un media de destination.
 
Me disais qu'il fallait utiliser un awk et la suite de la commande, mais je ne la connais pas des masses, pour ne pas dire pas du tout, et je dois avoir transferer ces fichiers avant la fin de l'apres-midi, donc assez peu de temps pour y arriver.
D'ou ma sollicitation a votre egard :)
 
Genre :  
 
awk {gsub("\"","",$2);gsub("\"","",$3);gsub("\"","",$4);gsub("\"","",$5);gsub("\"","",$6);gsub("\"","",$7);gsub("\"","",$9);} {print $0}' fichier_entree > fichier_sortie
 
mais je suis une grosse bouse, je l'avoue :cry: patapaÿ
Merci de votre aide (si vous le pouvez)
 
:hello:

Message cité 1 fois
Message édité par LeKeiser le 12-12-2008 à 12:04:14

---------------
"I intend to live the first half of my life.I don't care about the rest."Errol Flynn."The difference between genius and stupidity is that genius has its limits."Albert Einstein
Reply

Marsh Posté le 12-12-2008 à 11:56:46   

Reply

Marsh Posté le 12-12-2008 à 12:01:08    

awk -F ' ' '{ print $1" "$8 }'
 
?


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 12-12-2008 à 12:05:01    

zecrazytux a écrit :

awk -F ' ' '{ print $1" "$8 }'
 
?


aussi simple que ca??
ca m'efface les champs 2->7 et le 9eme??


---------------
"I intend to live the first half of my life.I don't care about the rest."Errol Flynn."The difference between genius and stupidity is that genius has its limits."Albert Einstein
Reply

Marsh Posté le 12-12-2008 à 12:23:58    

LeKeiser a écrit :


aussi simple que ca??
ca m'efface les champs 2->7 et le 9eme??


 
non ça t'affiche que les champs 1 et 8


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
Reply

Marsh Posté le 12-12-2008 à 12:36:08    

j'ai essaye la commande
awk -F ' ' '{ print $1" "$8 }'
ca m'affiche les 3 premiere lettres du champs 1 (y compris les guillemets), et 8 premieres du 8 eme champs (+guillemet)
ca donne ca en fait :

 
Citation :

"AA "Archive



Message édité par LeKeiser le 12-12-2008 à 12:36:55

---------------
"I intend to live the first half of my life.I don't care about the rest."Errol Flynn."The difference between genius and stupidity is that genius has its limits."Albert Einstein
Reply

Marsh Posté le 12-12-2008 à 12:54:21    

cest parce que t'es champs contiennent des espaces
 
tu peux faire quelquechose comme ça:
 

Citation :


carole@littletroll:~$ echo '"Nom Fichier"     "Tr uc"     "Tr uc"     "Tr uc"     "Tr uc"     "Tr uc"     "T ruc "     "Tr uc"     "Chemin Fichier"     "Truc" ' | awk -F '"' '{ print "\""$2"\" \""$18"\"" }'
"Nom Fichier" "Chemin Fichier"
 


Message édité par zecrazytux le 12-12-2008 à 12:54:43

---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 12-12-2008 à 13:56:54    

merci pour l'aide :jap:
 
j'ai lance cette commande :  

Citation :

awk -F ',' '{ print $1" "$10 }' /root/reessai.txt > test.txt


 
ca me recupere bien les 2 champs, entre guillemets
 
bon, gros probleme finalement : les chemins ont des espaces entre les mots :(
donc je peux avoir :
champs1 : Nom de Fichier
champs2 : Chemin Du Fichier La-bas tout loin
 
donc :  
"Nom De Fichier" "c:\Chemin Du Fichier La-Bas tout loin"
 
une fois les guillemets enleves, vais me retrouver avec non plus 2 champs, mais... 9 si je ne m'abuse... et pour concatener tout ca et les effacer :(


---------------
"I intend to live the first half of my life.I don't care about the rest."Errol Flynn."The difference between genius and stupidity is that genius has its limits."Albert Einstein
Reply

Marsh Posté le 12-12-2008 à 14:08:35    

LeKeiser a écrit :

merci pour l'aide :jap:
 
j'ai lance cette commande :  

Citation :

awk -F ',' '{ print $1" "$10 }' /root/reessai.txt > test.txt


 
ca me recupere bien les 2 champs, entre guillemets
 
bon, gros probleme finalement : les chemins ont des espaces entre les mots :(
donc je peux avoir :
champs1 : Nom de Fichier
champs2 : Chemin Du Fichier La-bas tout loin
 
donc :  
"Nom De Fichier" "c:\Chemin Du Fichier La-Bas tout loin"
 
une fois les guillemets enleves, vais me retrouver avec non plus 2 champs, mais... 9 si je ne m'abuse... et pour concatener tout ca et les effacer :(


 
regarde ma réponse au dessusk qu ise base sur le délimiteur " pour les champs.
ainsi, plus de probleme d'espaces


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 12-12-2008 à 19:30:07    

LeKeiser a écrit :


 
je cherche une solution pour enlever enlever tous les champs "Truc" pour ne garder que les champs 1 et 8.
Apres, je chercherai une "moulinette" pour faire un couper/coller de ces fichiers sur un media de destination.


 
 
man cut


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed