GNU/Linux >> Tutoriales Linux >  >> Linux

¿Imprimir líneas si la columna dada comienza con una letra mayúscula?

Tengo un archivo como este:

ID  A56
DS  /A56
DS  AGE 56

Y me gustaría imprimir toda la línea solo si la segunda columna comienza con una letra mayúscula.

Salida esperada:

ID  A56
DS  AGE 56

Lo que he probado hasta ahora:
awk '$2 ~ /[A-Z]/ {print $0}' file
Imprime todo:las mayúsculas se encuentran dentro de la segunda columna.

awk '$2 /[A-Z]/' file
Obtiene un error de sintaxis.

Respuesta aceptada:

Podrías usar awk como sugirió @cuonglm, o

  1. GNU grep

    grep -P '^[^s]+s+[A-Z]' file 
    
  2. Perl

    perl -lane 'print if $F[1]=~/^[A-Z]/' file
    
  3. Sed GNU

    sed -rn '/^[^s]+s+[A-Z]/p' file 
    
  4. shell (supone una versión reciente de ksh93, zsh o bash)

    while read -r a b; do 
        [[ $b =~ ^[A-Z] ]] && printf "%s %sn" "$a" "$b"; 
    done < file 
    

Linux
  1. ¿Imprimir líneas entre (e incluyendo) dos patrones?

  2. ¿Cómo generar un archivo e ignorar las líneas que comienzan con "?"?

  3. ¿Contar líneas en un archivo?

  4. Comando wc de linux

  5. ¿Cómo crear un archivo con un tamaño determinado en Linux?

Cómo imprimir líneas duplicadas en un archivo de texto en Linux

Lectura de líneas de un archivo con Bash:para vs. ¿Mientras?

¿Encontrar las líneas con el valor más bajo en su tercera columna dados los resultados de Grep?

Advertencia con nftw

Linux encuentra nombres de archivo con una cadena dada recursivamente

No se puede cambiar el nombre de un archivo cuyo nombre comienza con un guión