come rimuovere tag di commento HTML usando sed?


2

Voglio rimuovere i tag di commento in un file html.

<!--- <script save and execute me> -->

deve diventare:

<script save and execute me>

Provai

sed -i s_^<!-- \(.*\) -->$_\1_ text.sed

ma fallisce perché il & lt; e & gt; sono considerati caratteri di lettura in / out. Io che provato

sed -i 's_^<!-- \(.*\) -->$_\1_' text.sed

ma il \ 1 non è valutato come dovrebbe. Spero che qualcuno qui abbia delle idee?

Risposte:


2

Dato un file, test.html, contenente:

<html>
<!--- <script save and execute me> -->
</html>

Il comando:

sed -e "s/<!---* *<\(.*\)> *-->/<\1>/" test.html

emette:

<html>
<script save and execute me>
</html>

Sappi che questo cambierebbe anche:

<html>
<!-- some info explaining why we have commented out the following -->
<!-- <hr> -->
<!--- <script save and execute me> -->
</html>

in:

<html>
<!-- some info explaining why we have commented out the following -->
<hr>
<script save and execute me>
</html>

1
Questo (e ogni altro tentativo di analizzare HTML con sed) fallirà in modo spettacolare in così tanti modi diversi. Posso contare almeno tre modi diversi a colpo d'occhio per far fallire questo. Regex non è per l'analisi di HTML
Darth Android

3
La domanda non era di analizzare l'HTML, si trattava di fare una sostituzione specifica in un file. La risposta sopra non è intesa a fare altro che risolvere l'unico problema specifico. Per quanto possibile, SED è un ottimo strumento per risolvere problemi specifici come questo in cui la forma dell'input è chiaramente compresa, indipendentemente dal contesto.
BillP3rd

Aggiunto un ulteriore esempio che illustra possibili conseguenze indesiderate a cui allude @Darth Android.
BillP3rd

@ BillP3rd, grazie per la vostra pazienza e la vostra risposta a Darth Android. Sono più che consapevole che regex non è per l'analisi di html, ma come hai sostenuto questo è un caso molto specifico per commentare i riferimenti di script ai file js locali e commentare nei riferimenti a js esterni di google api esterni
dr jerry
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.