Se vuoi memorizzare le modifiche da sed
tornando al file usa il -i
opzione:
$ 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
Modifica: La regexp è più chiara se usiamo un diverso separatore con sed
e usa l'opzione regexp estesa -r
:
$ sed -r 's_</?td>__g' file
hello
hello
hello
abc
abc
Il ?
rendere facoltativo il carattere precedente quindi il /
non deve essere presente affinché l'espressione regolare corrisponda a <td>
e </td>
in uno.
Nel comando sed Usa l'opzione -i per modificare il file stesso , in caso contrario, l'output viene stampato sullo schermo ma il file rimane lo stesso.
La formula sarebbe:
sed -i <targetFile> 's/<beforeText>/<afterText>/g' <targetFile>
Ad esempio:
sed -i myCredentials.txt 's/secretPassword/xxx/g' myCredentials.txt
Un'altra opzione - emetti l'output in un altro file e rinominalo:
sed 's/secretPassword/xxx/g' myCredentials.txt > temp.txt
rm myCredentials.txt && mv temp.txt myCredentials.txt
per maggiori informazioni, guarda la documentazione:
L'utilità sed legge i file specificati o lo standard input se non sono specificati file, modificando l'input come specificato da un elenco di comandi . L'input viene quindi scritto nello standard output. Un singolo comando può essere specificato come primo argomento di sed. È possibile specificare più comandi utilizzando le opzioni -e o -f. Tutti i comandi vengono applicati all'input nell'ordine in cui sono specificati indipendentemente dalla loro origine.
-i Modifica i file sul posto , salvando i backup con l'estensione specificata. Se viene fornita un'estensione di lunghezza zero, non verrà salvato alcun backup. Non è consigliabile assegnare un'estensione di lunghezza zero quando si modificano i file sul posto, poiché si rischia il danneggiamento o il contenuto parziale in situazioni in cui lo spazio su disco è esaurito, ecc.