awk + imprimir línea solo si el primer campo comienza con una cadena como Linux1


16

cómo imprimir la línea en caso de que el primer campo comience con Linux1

por ejemplo:

  echo Linux1_ver2  12542 kernel-update  |   awk '{if ($1 ~ Linux1 ) print $0;}'

el objetivo es imprimir la línea, mientras que el primer campo comienza con Linux1

ejemplo de líneas:

Linux1-new  36352 Version:true
Linux1-1625543  9847
Linux1:16254 8467563 

comentario: el espacio o TAB podría estar antes del primer archivo

Respuestas:


15

De una sola mano:

echo "Linux1_ver2  12542 kernel-update"  |  awk '$1 ~ /^ *Linux1/'

$ 1 y ^ son redundantes. Su propuesta no cubre pestañas.
Hauke ​​Laging

@HuakeLaging ¿Por qué crees que los $ 1 y ^ son redundantes? Estoy bastante seguro de que ambos son necesarios para que la primera palabra solo coincida y para que la coincidencia esté anclada al inicio (por ejemplo, "mLinux" podría coincidir con / Linux1 /, pero no con / ^ Linux /).
Nick Bull

19

awk ignora los espacios en blanco al asignar campos. El comando predeterminado es imprimir.

awk '$1 ~ /^Linux1/'

Es lo que quieres

Explicación detallada:

  • $ 1 le dice a awk que mire la primera "columna".
  • ~ le dice a awk que haga una coincidencia RegularExpression /..../ es una expresión regular.
  • Dentro del RE está la cadena Linux y el carácter especial ^.
  • ^ hace que el RE coincida desde el principio (en lugar de coincidir en cualquier lugar de la línea).

Visto en conjunto: Awk coincidirá con una expresión regular con "Linux" al comienzo de la primera columna.


2

Esto debería funcionar para este caso específico.

awk '/^[[:blank:]]*Linux1/ {print}'

pero si el espacio es anterior a Linux1, no coincidirá
yael

@yael Hice una edición para corregir eso.
Hauke ​​Laging

+1 A cualquiera que se pregunte qué está haciendo esta sintaxis: está diciendo "haga las cosas dentro de los corchetes solo si la expresión regular coincide con esa línea".
user541686
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.