Réponses:
Je pense que vous recherchez -i:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
Par exemple:
$ cat foo.txt
hello world
$ sed -i 's/o/X/g' foo.txt
$ cat foo.txt
hellX wXrld
Si vous fournissez un suffixe, cela créera un fichier de sauvegarde:
$ ls
foo.txt
$ sed -i.bak 's/o/X/g' foo.txt
$ ls
foo.txt foo.txt.bak
Le fichier d'entrée est modifié et une sauvegarde contenant les données du fichier d'origine est créée.
Notez également que ceci est pour GNU sed, il existe de légères différences de format entre les différentes sedimplémentations.
sedne fait pas de montage sur place. Il crée un nouveau fichier et écrase l'ancien, l'inode change.
{ rm file; cmd > file; } < fileconduiraient à la conclusion que cmd lit et écrit dans le même fichier, ce qui n’est pas le cas. Il s’agit de deux fichiers qui portent le même nom. Mais je ne veux pas commencer une discussion ici.
sed: 1: "foo.txt": invalid command code flors de l'exécution sed -i 's/o/X/g' foo.txt. Cependant, fournir une extension, comme sed -i .bak 's/o/X/g' foo.txtfonctionne bien. Des idées comment le faire fonctionner sans créer de fichiers de sauvegarde?
sed -i '' 's/o/X/g' foo.txt
Ces solutions fonctionnent pour HPUX (UNIX):
1
{ rm test1.sh && awk '{gsub("Error", "NO_Error", $0); print}' > test1.sh; } < test1.sh.:
2
perl -pi -e 's/Error/NO_Error/g' test1.sh
3
sed 's/Error/NO_Error/g' test1.sh | tee test1.sh
-el'option est pour l'exécution de plusieurs sedcommandes
sed -e 's/linux/unix/' -e 's/os/OS/' file.txt
considérer file.txtcomme
linux os
alors O / P est
unix os
-i option enregistre les modifications en permanence ...
-edrapeau représente l'expression. Vous voulez probablement le-idrapeau qui signifiein-placeet je vous recommande fortement d'utilisersed -i.bak 's/../' filename