Corrispondenza Awk dell'intero record usando l'espressione regolare
Domanda
Usando Awk voglio abbinare il intero usando un'espressione regolare. Per impostazione predefinita, la corrispondenza dell'espressione regolare è per parti di un record.
La soluzione ideale sarebbe:
- Sii generale per tutti i campi, indipendentemente dal separatore di campo utilizzato.
- Non considera l'intero input come un singolo campo e analizzalo manualmente usando le funzioni stringa.
- Lavora in modo generale e non essere specifico di gawk per esempio.
Tuttavia, tutte le soluzioni sono interessanti fintanto che utilizzano Awk senza chiamate a programmi esterni .
Un esempio, ho:
$ ls
indata.txt t1.awk
$ cat indata.txt
a1010_
1010_
1010_b
$ cat t1.awk
/[01]*_[01]*/ { print $ awk -f t1.awk indata.txt
a1010_
1010_
1010_b
}
Ottengo:
$ awk -f t1.awk indata.txt
1010_
Questo è il risultato che sto cercando:
<*>Soluzione
Devi solo aggiungere un punto di inizio e fine alla tua regex:
/^[01]*_[01]*$/ { print <*> }
Altri suggerimenti
$ gawk '/^[01]*_[01]*$/' indata.txt
1010_
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow