Frage

awk verwenden Ich möchte die passen gesamten Datensatz einen regulären Ausdruck. Standardmäßig ist die reguläre Ausdrücke für Teile eines Datensatzes.

Die ideale Lösung wäre:

  • Seien Sie für alle Felder der Regel unabhängig von den Feldtrennzeichen verwendet.
  • Nicht die gesamte Eingabe als ein einzelnes Feld behandeln und analysieren es String-Funktionen manuell mit.
  • Die Arbeit in allgemeiner Form und nicht spezifisch zum Beispiel gaffen.

Allerdings jegliche und alle Lösungen von Interesse sind, solange sie Awk ohne Anrufe an externe Programme .

Ein Beispiel, ich habe:

$ ls
indata.txt  t1.awk
$ cat indata.txt 
a1010_
1010_
1010_b
$ cat t1.awk 
/[01]*_[01]*/ { print $0 }

ich:

$ awk -f t1.awk indata.txt
a1010_
1010_
1010_b

Dies ist das Ergebnis ich suche:

$ awk -f t1.awk indata.txt
1010_
War es hilfreich?

Lösung

Sie müssen nur einen Anfang und Ende Anker zu Ihrer regex hinzuzufügen:

/^[01]*_[01]*$/ { print $0 }

Andere Tipps

$ gawk '/^[01]*_[01]*$/' indata.txt
1010_
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top