PCRE grep in sed weiterleiten

PCRE grep in sed weiterleiten

Ich möchte diese Datei mit sed aufrufen, aber der BRE in sed funktioniert nicht so gut, wie ich es mir erhoffe.

Was ich jetzt habe, ist im Grunde nur:

$ cat Dungeon | grep -P -o '<\/.*?>'

Meine Frage ist, wie ich das per sed ausführe. Ich möchte die Teile entfernen, die ich per grep auslesen konnte. Alternativen sind auch willkommen; wenn möglich möchte ich aber auch wissen, wie ich das bewerkstelligen kann.

(Ja, ich verwende reguläre Ausdrücke für HTML)

Antwort1

Verwenden Sie das Tool „PCRE sed“:

cat Dungeon | perl -pe 's/<\/.*?>//g'

perl -i -pe 's{</.*?>}{}g' Dungeon

Die Kombination von grep und sed ist unwahrscheinlich; die beiden tauschen nicht genügend Kontext aus, um vorhandene Übereinstimmungen mit ihrer Position in der Datei zu übergeben. Sie könnten versuchen, grep -bdie Byte-Offsets jeder Übereinstimmung zu erhalten (und sie mitetwas anderes als sedum die entsprechenden Bytebereiche aus der Datei zu entfernen) oder versuchen Sie, die grep -oAusgabe in einen riesigen regulären Ausdruck umzuwandeln, der für die erweiterten POSIX-regulären Ausdrücke von sed geeignet ist (ändern Sie Zeilenumbrüche in Pipes für a|b|cdie Verzweigungssyntax und stellen Sie sicher, dass alle Sonderzeichen des regulären Ausdrucks maskiert werden – was wiederum einen weiteren „sed“-Aufruf erfordert). Beides wäre jedoch mit deutlich mehr Aufwand verbunden, als es wert ist.

verwandte Informationen