Question sed

Fermé
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 8 oct. 2015 à 09:19
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 10 oct. 2015 à 11:04
hello
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

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
9 oct. 2015 à 17:57
Salut,

Euh... j'ai pas tout pigé là ;-\

df / > fichier
n'est-il pas suffisant ?
Ou encore
df / | tee fichier
?
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
10 oct. 2015 à 09:28
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 avec
sed 's/.*/cmd fichier/e' fichier

j'ai trouvé ça
cmd fichier | sed -i -e '$ {r /dev/stdin' -e '}; 1,$d' fichier 

le double -e est nécessaire, car {r /dev/stdin } ne passe pas
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024
10 oct. 2015 à 10:19
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 )

Ça aussi marche :
df / | sed -e 'g;r /dev/stdin' -e '/^$/d' fich
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024
10 oct. 2015 à 11:04
a tester aussi :
df / | sed -n -e 'r /dev/stdin' -e 'w fich'
0