Question sed
dubcek
Messages postés
18627
Date d'inscription
Statut
Contributeur
Dernière intervention
-
zipe31 Messages postés 34620 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 34620 Date d'inscription Statut Contributeur Dernière intervention -
hello
j'aimerais remplacer l'intégralité d'un fichier par le stdin avec sed.
comment supprimer les lignes existantes ?
merci
j'aimerais remplacer l'intégralité d'un fichier par le stdin avec sed.
$ cat fichier
1
2
3
4
$ df / | sed 'r /dev/stdin' fichier
1
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 12616232 8049996 3925368 68% /
2
3
4
$ df / | sed '1,$d;r /dev/stdin' fichier
$
comment supprimer les lignes existantes ?
merci
1 réponse
-
Salut,
Euh... j'ai pas tout pigé là ;-\
df / > fichier
n'est-il pas suffisant ?
Ou encoredf / | tee fichier
?
-
l'idée c'est d'utiliser sed -i sur le fichier d'entrée, par ex.
sort fichier | cmd | sed -i 'code' fichier
d'éviter trop d'échappements si cmd est awk, par. ex avecsed 's/.*/cmd fichier/e' fichier
j'ai trouvé çacmd fichier | sed -i -e '$ {r /dev/stdin' -e '}; 1,$d' fichier
le double -e est nécessaire, car {r /dev/stdin } ne passe pas- Ok, mais j'en reviens au fait que si le but final est d'écrasé le contenu de fichier, autant y aller franco (mes exemples plus haut), non ?
Sinon pour rappel, awk a aussi sa commande-i inplace
(voir là)
Ça aussi marche :df / | sed -e 'g;r /dev/stdin' -e '/^$/d' fich
-