GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo unir líneas que tienen más de un número específico de caracteres especiales

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

Linux
  1. ¿Cómo unir líneas que no comienzan con "#" o ";"?

  2. Linux:¿cómo buscar una palabra específica y tomar texto?

  3. Cómo contar el número de líneas en un archivo en Linux (ejemplos de comandos wc y nl)

  4. ¿Cómo puedo hacer que grep imprima las líneas debajo y encima de cada línea coincidente?

  5. ¿Cómo escribir caracteres especiales en Linux?

Cómo eliminar una línea en Vim en Linux

Cómo hacer ping a un número de puerto específico

Mostrar caracteres especiales ocultos en Vim

Cómo eliminar varias líneas en Vim

Grep:cuenta el número de coincidencias por línea

cómo insertar una nueva línea si una línea tiene más de 60 caracteres