Ich muss mit awk nach einem Schlüsselwort suchen, aber ich möchte eine Suche ohne Berücksichtigung der Groß- / Kleinschreibung (ohne Berücksichtigung der Groß- / Kleinschreibung) durchführen.
Ich denke, der beste Ansatz ist, sowohl den Suchbegriff ("Schlüsselwort") als auch die Zielzeile, die awk gleichzeitig liest, in Großbuchstaben zu setzen. Aus dieser Frage, wie ich es verwende toupper
, um in Großbuchstaben zu drucken, aber ich weiß nicht, wie ich es in einer Übereinstimmung verwende, weil diese Antwort nur das Drucken zeigt und den Großbuchstaben-Text nicht in einer Variablen belässt.
Hier ist ein Beispiel für diese Eingabe:
blablabla
&&&Key Word&&&
I want all
these text and numbers 123
and chars !"£$%&
as output
&&&KEY WORD&&&
blablabla
Ich möchte diese Ausgabe:
I want all
these text and numbers 123
and chars !"£$%&
as output
Dies ist, was ich habe, aber ich weiß nicht, wie ich hinzufügen soll toupper
:
awk "BEGIN {p=0}; /&&&key word&&&/ { p = ! p ; next } ; p { print }" text.txt
quelle
awk 'toupper($0)~/&&&KEY WORD&&&/ { p = ! p ; next } ; p;' text.txt
. DerBEGIN
Block ist nicht erforderlich und reicht aus, da standardmäßig gedrucktp;
wird.BEGIN
Block ist nicht erforderlich ", da eine nicht initialisierte Variable als falsch ausgewertet wird.tolower
ist auf alten (oder nicht so alten) awk-Versionen (zB AIX) vorhanden, abertoupper
nicht immer verfügbar ^^.gawk hat eine
IGNORECASE
eingebaute Variable, die, wenn sie auf einen Wert ungleich Null gesetzt ist, bewirkt, dass bei allen Vergleichen von Zeichenfolgen und regulären Ausdrücken die Groß- und Kleinschreibung nicht beachtet wird. Sie könnten das verwenden:etc. Das ist zwar spezifisch
gawk
, aber ich finde es lesbarer als die (portablere) Alternative von meuh. Ob das ein Problem ist, liegt natürlich ganz bei Ihnen.quelle