Aggiungi espressioni regolari con grep


2

Devo usare grep per trovare 8 codici postali da un file di testo, l'ordine dei caratteri di ciascun codice postale è il seguente: 1. Lettera maiuscola 2. Cifra 3. Lettera maiuscola 4. Spazio (opzionale) 5. Cifra 6. Lettera maiuscola 7. Cifra

Ho usato il comando grep:

grep '[A-Z][0-9][A-Z][0-9+[][0-9][A-Z][0-9]'

Questo mi ha dato 5 codici postali che hanno uno spazio nel carattere 4

Ho anche usato questo comando grep:

grep '[A-Z][0-9][A-Z][0-9\.][A-Z][0-9]'

Questo mi ha dato gli ultimi 3 codici postali senza spazio al carattere 4.

Non so come scrivere un comando che afferma che uno spazio può essere facoltativo. Grazie


Provagrep -E '...'
Pilot6

Risposte:


2

Il quantificatore ERE ?indica zero o una occorrenza. Così

grep -E '[A-Z][0-9][A-Z] ?[0-9][A-Z][0-9]'

Se si desidera consentire zero o più spazi, passare ?a *. Per consentire le schede così come gli spazi, è possibile utilizzare [ \t]?, [[:blank:]]?o (in GNU grep)\s?


Puoi anche usare \dper abbinare i caratteri delle cifre invece [0-9]che l'espressione sia un po 'più piccola e più pulita.
user3140225

0

Un'espressione come sotto dovrebbe funzionare:

grep '[A-Z][0-9][A-Z][ ]*[0-9][A-Z][0-9]' file

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.