Awk Anpassung der gesamten Datensatz mit regulärem Ausdruck
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_
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