
Tengo dos archivos con script, digamos file1
y file2
. Quiero tomar el contenido de file1
, cambiar el carácter a
a A
in file1
y agregar la salida file2
sin modificar el contenido de file1
. Estoy intentando con:
sed -i ‘s/a/A/g’ file1 >> file2
pero esto simplemente cambia el a
a A
in file1
.
Respuesta1
Simplemente quita la -i
bandera:
sed 's/a/A/g' file1 >> file2
La -i
bandera se utiliza para editar el archivo especificado en su lugar, por lo que hace precisamente eso en file1
. Deman sed
:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
La razón por la que no se le agrega nada file2
cuando lo usa -i
es que >>
se usa para agregar stdout
al archivo especificado. Pero como file1
se edita en el lugar debido a -i
, no se genera ningún resultado, por lo que no se agrega nada a file2
.