Estoy tratando de reemplazar varias palabras en el archivo usando sed -i #expression1 #expression2
archivo
Something 123 item1
Something 456 item2
Something 768 item3
Something 353 item4
Salida (deseada)
anything 123 stuff1
anything 456 stuff2
anything 768 stuff3
anything 353 stuff4
Audiciones
Puedo obtener la siguiente salida usando sed -i2 veces.
sed -i 's/Some/any/g' file
sed -i 's/item/stuff/g' file
¿Puedo tener alguna forma posible de hacer esto como un solo comando en el lugar como
sed -i 's/Some/any/g' -i 's/item/stuff/g' file
Cuando probé el código anterior, se toma s/item/stuff/gcomo un archivo e intento trabajar en él ...
shell
shell-script
text-processing
sed
JigarGandhi
fuente
fuente

sed - i 's/Some\(.*\)item/any\1stuff/' fileRespuestas:
Dependiendo de la versión de
sedsu sistema, puede hacerNo necesita
gdespués de la barra final en elscomando aquí, ya que solo está haciendo un reemplazo por línea.Alternativamente:
La
-iopción le dicesedque edite los archivos en su lugar; si hay caracteres inmediatamente después,-iluegosedrealiza una copia de seguridad del archivo original y usa esos caracteres como la extensión del archivo de copia de seguridad. P.ej,o
modificará
file, guardando el original enfile.bak.Por supuesto, en un sistema Unix (o similar a Unix), normalmente usamos '~' en lugar de '.bak', por lo que
fuente
-i. Así quesed -i '' 's/a/b/;s/c/d/' fileosed -i .back 's/a/b/;s/c/d/'osed -i.back 's/a/b/;s/c/d/'no. Otrassedimplementaciones generalmente no son compatibles-i.-iy la extensión.sed -i 's/$username = "root"/$username = "newuser"/; s/$password = "password"/$password = "passwd"/; s/$dbname="handicraftstore"/$dbname="handicraft"' Web/database.phpresultadossed: -e expression #1, char 141: unterminated'scomando le falta el final/.Puede encadenar expresiones sed junto con ";"
fuente
Expresión múltiple usando múltiples
-eopciones:o puedes usar solo uno:
Debe dar una extensión para el archivo de respaldo, ya que cuando alguna implementación de
sed, como OSX sed , no funciona con una extensión vacía (debe usarsed -i ''para anular los archivos originales).fuente
Puede usar Vim en modo Ex:
%seleccione todas las líneasssustituirxguardar y cerrarfuente