Solución Perl:
perl -ne 'print if tr/,// > 4'
-n
lee el archivo línea por línea- el operador tr devuelve el número de coincidencias.
Para imprimir las líneas con menos de 4, simplemente cambie >
a <
.
Usando el grep
comando:
grep -E '(,.*){5}' myfile
hace el trabajo. Explicación:
-E
:usar una expresión regular extendida...
'(,.*)
:... para encontrar una coma seguida de cualquier número de caracteres, incluso cero...
{5}'
:... y repite el patrón anterior 5 veces.
Si desea unir líneas con menos de 4 comas, necesitará:
grep -xE '([^,]*,){0,3}[^,]*' myfile
Esta vez, necesitamos -x
por lo que el patrón está anclado tanto al principio como al final de la línea para que coincida con la línea completa. Y usamos [^,]*
en lugar de .*
ya que este último coincidiría felizmente con las cadenas que contienen ,
s como .
coincide con cualquiera personaje.
Otro enfoque es invertir con -v
el enfoque anterior. "Menos de 4" es lo mismo que no "al menos 4", entonces:
grep -vE '(,.*){4}' myfile
El awk
versión:
awk -F, 'NF > 5' myfile