GNU/Linux >> Linux Esercitazione >  >> Linux

Come grep le righe che hanno più di un numero specifico di caratteri speciali

Soluzione Perl:

perl -ne 'print if tr/,// > 4'
  • -n legge il file riga per riga
  • l'operatore tr restituisce il numero di corrispondenze.

Per stampare le righe con meno di 4, basta cambiare > a < .


Usando il grep comando:

grep -E '(,.*){5}' myfile

fa il lavoro. Spiegazione:

-E :usa una Regex estesa...

'(,.*) :... per trovare una virgola seguita da un numero qualsiasi di caratteri, anche zero...

{5}' :... e ripeti lo schema precedente 5 volte.

Se vuoi eseguire il grep delle righe con meno di 4 virgole, avrai bisogno di:

grep -xE '([^,]*,){0,3}[^,]*' myfile

Questa volta abbiamo bisogno di -x quindi il modello è ancorato sia all'inizio che alla fine della linea in modo che corrisponda alla linea completa. E usiamo [^,]* invece di .* poiché quest'ultimo corrisponderebbe altrimenti alle stringhe contenenti , s come . corrisponde a qualsiasi carattere.

Un altro approccio è invertire con -v l'approccio precedente. "Meno di 4" equivale a non "almeno 4", quindi:

grep -vE '(,.*){4}' myfile

Il awk versione:

awk -F, 'NF > 5' myfile

Linux
  1. Con il comando "cat" di Linux, come mostrare solo determinate righe per numero?

  2. Come Grep Lines che non iniziano con "#" o ";"?

  3. Linux:come grep per una parola specifica e afferrare il testo?

  4. Come contare il numero di righe in un file dopo una corrispondenza Grep?

  5. Come posso fare in modo che grep stampi le righe sotto e sopra ogni riga corrispondente?

Come eliminare la riga in Vim su Linux

Come eseguire il ping di un numero di porta specifico

Mostra caratteri speciali nascosti in Vim

Come eliminare più righe in Vim

bash:come passare argomenti della riga di comando contenenti caratteri speciali

Grep:conta il numero di corrispondenze per riga