Wie verwende ich grep, sed und awk, um Tags zu analysieren?

2647
Ritwik Bose

Ich möchte ein Skript schreiben, das ein Open / Close-Tag-Paar in einer Textdatei findet und jeder Zeile zwischen dem Paar eine feste Zeichenfolge voranstellt. Ich denke, ich benutze grep, um die Tag-Zeilennummern zu finden, und entweder awk oder sed, um die Tags zu platzieren. Ich bin mir jedoch nicht sicher, wie genau dies zu tun ist.

Kann jemand helfen?

0
Hoffen wir, dass es keine HTML-Tags sind: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags :) John T vor 14 Jahren 2
Ich denke über etwas nach, wenn Sie `; tag; ; tag; `dann durchläuft mein Programm` tag` vor jeder Zeile von ``. Ich arbeite gerade an einem Notiz-Aufnahmewerkzeug mit Markdown, aber es ist mühsam, ein ">" in jede Zeile oder sogar ">>" :-p einzufügen Ritwik Bose vor 14 Jahren 0

3 Antworten auf die Frage

1
mpez0

In awk:

START  /<close tag regex>/  noprefix=="false"  noprefix=="true"  /<open tag regex>/  
Perfekt. Jetzt ist meine einzige andere Frage: Kann ein awk-Skript Argumente annehmen? :-p Ritwik Bose vor 14 Jahren 0
Ja, besuchen Sie http://www.math.utah.edu/docs/info/gawk_15.html#SEC136 DCookie vor 14 Jahren 0
Auch http://evc-cit.info/cit052/pass_to_awk.html DCookie vor 14 Jahren 0
Um Argumente zu akzeptieren, packen Sie die awk in ein Shell-Skript. Ein paar Minuten mit einem Shell- oder Awk-Programmierbuch oder bei Google finden Sie viele Beispiele. Eine einfache ist unter http://www.shelldorado.com/goodcoding/awkinvoke.html#shcall. mpez0 vor 14 Jahren 0
1
9tat

Dies sollte von einer der traditionell syntaxbewussten Sprachen (yacc usw.) durchgeführt werden. In bestimmten Fällen ist es in Ordnung, dies mit grep und dergleichen zu tun, aber regexp ist einfach nicht mächtig genug, um die Feinheiten von HTML zu erfassen

Eigentlich habe ich es gut funktioniert. Ich habe in Bash ein "over awk" geschrieben und die awk-Skripte als Textdatei gespeichert. Aber es tut alles, was ich brauche. Ritwik Bose vor 14 Jahren 0
0
0fnt

Sie sollten in Betracht ziehen, yacc dafür zu verwenden. Mit sed, awk oder grep ist dies NICHT ohne erheblichen Aufwand möglich. Was das Lernen von Yacc anbelangt, so würde es nicht länger dauern als für das Lernen von sed / awk / grep. Und so wird es wirklich einfach.

anscheinend nicht wahr. Ritwik Bose vor 14 Jahren 0