Si desea almacenar los cambios desde sed
volver al archivo usa el -i
opción:
$ cat file
<head>abc</head>
<td>hello</td>
<td>hello</td>
<td>hello</td>
<td>abc</td>
<td>abc</td>
<h1>abc</h1>
$ sed -ni '/<td>/{s/^\s*//;s/abc//;s/<\/\?td>//g;p}' file
$ cat file
hello
hello
hello
Editar: La expresión regular es más clara si usamos un separador diferente con sed
y use la opción de expresión regular extendida -r
:
$ sed -r 's_</?td>__g' file
hello
hello
hello
abc
abc
El ?
hacer que el carácter anterior sea opcional para que el /
no tiene que estar presente haciendo que la expresión regular coincida con <td>
y </td>
en uno.
En el comando sed Use la opción -i para cambiar el archivo , si no, la salida se imprime en la pantalla pero el archivo permanece igual.
La fórmula sería:
sed -i <targetFile> 's/<beforeText>/<afterText>/g' <targetFile>
Por ejemplo:
sed -i myCredentials.txt 's/secretPassword/xxx/g' myCredentials.txt
Otra opción - salida a otro archivo y cámbiele el nombre:
sed 's/secretPassword/xxx/g' myCredentials.txt > temp.txt
rm myCredentials.txt && mv temp.txt myCredentials.txt
para obtener más información, consulte la documentación:
La utilidad sed lee los archivos especificados, o la entrada estándar si no se especifican archivos, modificando la entrada según lo especificado por una lista de comandos . Luego, la entrada se escribe en la salida estándar. Se puede especificar un solo comando como primer argumento para sed. Se pueden especificar múltiples comandos utilizando las opciones -e o -f. Todos los comandos se aplican a la entrada en el orden en que se especifican, independientemente de su origen.
-i Editar archivos en el lugar , guardando copias de seguridad con la extensión especificada. Si se proporciona una extensión de longitud cero, no se guardará ninguna copia de seguridad. No se recomienda dar una extensión de longitud cero al editar archivos en el lugar, ya que corre el riesgo de corrupción o contenido parcial en situaciones en las que se agota el espacio en disco, etc.