Archiv verlassen und diese Seite im Standarddesign anzeigen : awk regex complemented list Funktioniert nicht
Hallo,
ich will mittels
awk '/[^#]/ printf("%s",$0)' datei
Alle Zeilen einer Datei ausfiltern die (am Anfang) ein # Zeichen enthalten.
Das obige Kommando listet aber alle Zeilen auf.
Wenn ich dem umgekehrten Fall betrachte:
awk '/[#]/ printf("%s",$0)' datei
dann bekomme ich wirklich nur die Zeilen mit # wieso geht das nicht umgekehrt?
/[^#]/ gibt einen Treffer, wenn sich in der Zeile ein Zeichen befindet, dass kein # ist. Ob sich irgendwo im Rest der Zeile ein # befindet ist dafür dann uninteressant.
Wenn du ein regex in awk negieren willst kannst geht das so:
awk '! /#/ { print $0; }' file
Wenn du aber wirklich nur Zeilen haben willst, die kein # enthalten ist grep einfacher:
grep -v '#'
Ich nehme an, es geht darum, auskommentierte Zeilen auszublenden;-)
Ich mache das immer so:
grep -E -v "(^#|^$)" filenameDamit werden auch leere Zeilen nicht angezeigt.
Gruss Pit.
Vielen dank euch beiden (es ging tatsächlich um das Ausblenden von Kommentaren, ich hatte gerade selbst eine Lösung gefunden und zwar diese hier:
awk '/^[^#]/ {print $0}' datei
Allerdings verstehe ich erste jetzt richtig wieso das funktioniert hat.
Ich habe mit Regulären Ausdrücken noch nicht so viel Erfahrung.
Wahrscheinlich verstehst Du die unterschiedliche Bedeutung von "^" nicht richtig.
^ in "/^" bezeichnet den Anfang einer Zeile,
^ in [^a] negiert die folgenden Zeichen, also alle Zeilen, die "a" NICHT enthalten.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.