#1 Le 09/01/2015, à 08:33
- LaGirafe
[Résolu] Trier un fichier en éditant sur place (sans fichier sortie)
Bonjour,
Pour trier un fichier en éditant sur place, je fais :
cat fichier1.txt | sort > fichier2.txt
cat fichier2.txt > fichier1.txt
rm fichier2.txt
Il n'y aurait pas moyen de tout faire sur une ligne, sans créer de fichier sortie ?
J'ai aussi essayé
- de combiner sort avec une commande sed, qui elle permet d'éditer sur place avec sed -i, sans succès.
- de mettre le résultat dans une variable, mais dans ce cas je perds les retours chariot, que je retrouve avec tr ' ' '\n' :
i=$(sort fichier1.txt); echo $i | tr ' ' '\n' > fichier1.txt
Peut-on faire plus simple ?
Peut-on conserver les retours chariot ?
Merci à vous
Dernière modification par LaGirafe (Le 09/01/2015, à 10:38)
Hors ligne
#2 Le 09/01/2015, à 09:30
- Hizoka
Re : [Résolu] Trier un fichier en éditant sur place (sans fichier sortie)
Deja le cat ne sert à rien ici:
cat fichier1.txt | sort > fichier2.txt
=>
sort fichier1.txt > fichier2.txt
Sort doit en effet renvoyer les infos vers un autre fichier sinon celui ci sera vide.
i=$(sort fichier1.txt); echo $i | tr ' ' '\n' > fichier1.txt
Toujours penser à encadrer les variables de " car
var="Bonjour comment
vas tu ?"
echo "${var}"
Bonjour comment
vas tu ?
echo $var
Bonjour comment vas tu ?
Sed n'est pas du tout utile dans le cas présent...
cat test
a
z
e
r
t
y
u
i
o
p
var=$(sort test)
echo "${var}" > test
cat test
a
e
i
o
p
r
t
u
y
z
ou en une ligne comme tu veux :
var=$(sort test) && echo "${var}" > test
Dernière modification par Hizoka (Le 09/01/2015, à 09:31)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#3 Le 09/01/2015, à 10:40
- LaGirafe
Re : [Résolu] Trier un fichier en éditant sur place (sans fichier sortie)
Super clair et concis, merci beaucoup !
Hors ligne