Bonjour,
pas sûr de poster au bon endroit:
j'ai un très gros fichier texte (+ de 800000 lignes). J'aimerais supprimer les 20 premiers caractères de chaque ligne.
Existe t'il une commande simple ou un petit script pour le faire?
Merci
Bonjour,
pas sûr de poster au bon endroit:
j'ai un très gros fichier texte (+ de 800000 lignes). J'aimerais supprimer les 20 premiers caractères de chaque ligne.
Existe t'il une commande simple ou un petit script pour le faire?
Merci
man cut
Merci,
je fais donc cut -c17-37 myfile.txt
et ça affiche bien dans la fenêtre les caractères que je souhaite conserver. Cela dit, je n'arrive pas à écrire ces caractères dans le même fichier:
cut -c17-37 myfile.txt > myfile.txt
le fichier myfile.txt est vide??
Il faut en fait passer par un fichier intermédiaire pour reconstruire après par copier-coller le fichier initial.
Si vous êtes joueur, fortement déconseillé sans affichage préalable (modification irrémédiable du fichier initial) :
Boucle en une ligne de commande ...
cat myfile.txt | while read ; do cut -c17-37 > myfile.txt ; done
« Developpez.com est un groupe international de bénévoles dont la motivation est l'entraide au sens large » (incl. forums developpez.net)
Club des professionnels en informatique
Liste des balises BB
Ben oui. Unix est ainsi fait qu'il "fait" les redirections avant de lancer les process (en gros!). Donc il "exécute" D'ABORD le "> myfile.txt" (pour établir les file descriptors), ce qui efface complètement myfile.txt, puis ENSUITE il essaie de faire le cut... sur un fichier vide!
Une solution simple (si on a assez de disque):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 mv myfile.txt myfile.txt$$ cut -c17-37 myfile.txt$$ > myfile.txt && rm -f myfile.txt$$
Tu ouvres le fichier avec emacs, puis tu tapes les 12 keystrokes suivants:
Code emacs : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 M-< ;; beginning-of-buffer C-SPC ;; set-mark-command M-> ;; end-of-buffer C-p ;; previous-line C-2 ;; digit-argument C-0 ;; digit-argument C-f ;; forward-char C-x r k ;; kill-rectangle C-x C-s ;; save-buffer
ou avec sed:
Code : Sélectionner tout - Visualiser dans une fenêtre à part sed -i -e 's/^....................//' myfile.txt
Salut,
En prenant un raccourci
Sinon avec cut :
Code : Sélectionner tout - Visualiser dans une fenêtre à part sed -r -i.bak 's/^.{20}//' myfile.txt
Code : Sélectionner tout - Visualiser dans une fenêtre à part cut -b 21- myfile.txt > new_file.txt
Partager