J'essaie de remplacer plusieurs mots dans le fichier en utilisant sed -i #expression1 #expression2
fichier
Something 123 item1
Something 456 item2
Something 768 item3
Something 353 item4
Sortie (souhaitée)
anything 123 stuff1
anything 456 stuff2
anything 768 stuff3
anything 353 stuff4
Essais
Je peux obtenir la sortie suivante en l'utilisant sed -i
2 fois.
sed -i 's/Some/any/g' file
sed -i 's/item/stuff/g' file
Puis-je avoir un moyen possible de faire cela comme une commande unique sur place comme
sed -i 's/Some/any/g' -i 's/item/stuff/g' file
Lorsque j'ai essayé le code ci-dessus, il prend s/item/stuff/g
un fichier et j'essaie de travailler dessus.
shell
shell-script
text-processing
sed
JigarGandhi
la source
la source
sed - i 's/Some\(.*\)item/any\1stuff/' file
Réponses:
Selon la version de
sed
votre système, vous pourrez peut-être le faireVous n'avez pas besoin
g
de la dernière barre oblique dans les
commande ici, car vous ne faites qu'un seul remplacement par ligne.Alternativement:
L'
-i
option indiquesed
de modifier les fichiers sur place; s'il y a des personnages immédiatement après l'-i
alorssed
fait une sauvegarde du fichier d' origine et utilise ces caractères comme l'extension du fichier de sauvegarde. Par exemple,ou
va modifier
file
, en enregistrant l'original dansfile.bak
.Bien sûr, sur un système Unix (ou de type Unix), nous utilisons normalement '~' plutôt que '.bak', donc
la source
-i
. Alorssed -i '' 's/a/b/;s/c/d/' file
oused -i .back 's/a/b/;s/c/d/'
oused -i.back 's/a/b/;s/c/d/'
là. Les autressed
implémentations ne prennent généralement pas en charge-i
.-i
et l'extension.sed -i 's/$username = "root"/$username = "newuser"/; s/$password = "password"/$password = "passwd"/; s/$dbname="handicraftstore"/$dbname="handicraft"' Web/database.php
résultatssed: -e expression #1, char 141: unterminated
«commande»s
commande manque sa finale/
.Vous pouvez chaîner des expressions sed avec ";"
la source
Expression multiple utilisant plusieurs
-e
options:ou vous pouvez en utiliser un seul:
Vous devez donner une extension pour le fichier de sauvegarde, car lorsqu'une implémentation de
sed
, comme OSX sed ne fonctionne pas avec une extension vide (vous devez utilisersed -i ''
pour remplacer les fichiers d'origine).la source
Vous pouvez utiliser Vim en mode Ex:
%
sélectionner toutes les ligness
remplacerx
sauver et fermerla source