suppression de colonne dans un texte

suppression de colonne dans un texte - Shell/Batch - Programmation

Marsh Posté le 29-05-2013 à 10:59:20    

Bonjour,
 
Je ne sais pas si c'est possible d'être plus rapide que :
 - de lire un fichier ligne par ligne
 - supprimer les champs indiqués avec awk (en l'occurence le premier et troisième mots pour l'essai)
 
for ligne in `cat fichier1.txt"` ; do
     echo "$ligne" | awk -F" " '{ print $1="" ; print $3="" ; print $0 ; }' >> fichier2.txt"
done
 
C'est déjà très très rapide mais je manipule des fichiers de plusieurs milliers de lignes ce qui est un peu long et chiant lorsque l'on attend devant son écran ^^.
 
J'espère voir une réponse qui me fasse rêver.

Reply

Marsh Posté le 29-05-2013 à 10:59:20   

Reply

Marsh Posté le 29-05-2013 à 11:26:36    

Alors déjà faire une boucle juste pour lancer un awk c'est pas du tout utile, il suffit juste de donner a awk le nom du fichier en argument, il fait lui même la boucle.
Pour réaffecter les variables tu peux faire plus simple aussi :

Code :
  1. awk -F" " '{$1=$3="" ; print $0}' fichier1.txt > fichier2.txt


 
Après pour ton problème, si j'ai bien compris tu veux afficher les champs 2 et 4* d'un fichier. Pour ça, le cut est ton ami :
 

Code :
  1. cut -d' ' -f2,4- fichier1.txt > fichier2.txt


Message édité par Nukolau le 29-05-2013 à 11:31:23
Reply

Marsh Posté le 29-05-2013 à 11:29:30    

logiquement awk est plus rapide que cut mais merci, je vais essayer les deux possibilités.
 
Oui c'est ce que je viens de faire avec awk. J'avais la tête en l'air pour la boucle, cela est de nouveau rapide.
 
merci beaucoup


Message édité par kenwol le 29-05-2013 à 11:35:23
Reply

Marsh Posté le 29-05-2013 à 11:45:35    

je viens d'ajouter la version awk dans mon message.
Pour les temps d'exécution du awk ça dépends, un "grep | cut" par exemple est plus rapide qu'un awk tout court :)

Reply

Sujets relatifs:

Leave a Replay

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