Se strettamente desidera mettere a nudo tutti i tag HTML, ma allo stesso tempo solo sostituire il tag </b>
con una -
, è possibile concatenare due semplici sed
comandi con un tubo:
cat your_file | sed 's|</b>|-|g' | sed 's|<[^>]*>||g' > stripped_file
Questa volontà passare tutti i contenuti del file al primo comando sed
che gestirà la sostituzione di </b>
in un -
. Quindi, l'output di questo verrà inviato a un sed
che sostituirà tutti i tag HTML con stringhe vuote. L'output finale verrà salvato nel nuovo file stripped_file
.
Utilizzando un metodo simile come l'altra risposta da @Steve, si potrebbe anche usare sed
s' -e
opzione per le espressioni a catena in un unico (comando non pipe); con l'aggiunta di -i
, si può anche leggere-in e sostituire il contenuto del file originale senza la necessità di cat
, o un nuovo file:
sed -i -e 's|</b>|-|g' -e 's|<[^>]*>||g' your_file
Questo farà la sostituzione proprio come il comando incatenato sopra, tuttavia questa volta sostituirà direttamente i contenuti nel file di input. Per salvare in un nuovo file, rimuovere lo -i
e aggiungere > stripped_file
alla fine (o qualunque nome di file si scelga).
Questo mi ha aiutato a risolvere alcuni file XML con '= "x"' tipo di testo variabile . Usato 's/'variable ="' [^ \ "] * \" // 'per abbinare il nome del tag e tutto tra le due virgolette successive. (Ignora il mix funky delle virgolette doppie con escape e escape) – cde
Recommending' cat | Sed | sed' e poi menzionando di passaggio che in realtà tutto ciò di cui hai bisogno è "sed" sembra mal diretto. "Potresti anche" non raccomandare l'approccio sbagliato ". – tripleee