Solución Perl:
perl -ne 'print if tr/,// > 4'
-nlee 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