Si estrictamente quiere despojar a todas las etiquetas HTML, pero al mismo tiempo única sustituir la etiqueta </b>
con un -
, se pueden encadenar dos simples sed
comandos con un tubo:
cat your_file | sed 's|</b>|-|g' | sed 's|<[^>]*>||g' > stripped_file
Esta voluntad pase todos los contenidos del archivo al primer comando sed
que controlará la sustitución del </b>
por un -
. Luego, la salida de eso se canalizará a un sed
que reemplazará todas las etiquetas HTML con cadenas vacías. El resultado final se guardará en el nuevo archivo stripped_file
.
Utilizando un método similar al de la otra respuesta de @Steve, también puede usar la opción sed
-e
para encadenar expresiones en un solo comando (sin derivación); añadiendo -i
, también se puede leer en y reemplazar el contenido de su archivo original sin necesidad de cat
, o un nuevo archivo:
sed -i -e 's|</b>|-|g' -e 's|<[^>]*>||g' your_file
Esto va a hacer la sustitución igual que el mando encadenado anteriormente, sin embargo esta vez reemplazará directamente el contenido en el archivo de entrada. Para guardar en un nuevo archivo, elimine el -i
y agregue > stripped_file
hasta el final (o el nombre de archivo que elija).
Esto ayudó a corregir algunos archivos xml con la variable '=' texto tipo "x" . Usado 's/'variable ="' [^ \ "] * \" // 'para hacer coincidir el nombre de la etiqueta y todo entre las siguientes dos comillas dobles. (Ignore la combinación funky de comillas simples y escapadas) – cde
Recomendar' cat | Sed | sed' y luego mencionar de paso que, de hecho, todo lo que necesitas es 'sed', parece estar mal dirigido." También podrías "simplemente no recomendar el enfoque defectuoso. – tripleee