Quiero imprimir todas las líneas del archivo hasta la palabra coincidente, por favor, aconsejen cómo hacerlo con awk
por ejemplo
Quiero imprimir todas las líneas hasta la palabra PPP
comente que la primera línea podría ser diferente de AAA (cualquier palabra)
cat file.txt
AAA ( the first line/word chuld be any word !!!!! )
BBB
JJJ
OOO
345
211
BBB
OOO
OOO
PPP
MMM
(((
&&&
así que necesito conseguir esto
AAA
BBB
JJJ
OOO
345
211
BBB
OOO
OOO
PPP
otro ejemplo (desea imprimir hasta KJGFGHJ)
cat file.txt1
HG
KJGFGHJ
KKKK
así que necesito
HG
KJGFGHJ
sed
:sed '/PPP/q' infile
awk
, así que no doy otras herramientas.1
es como{print $0}
. También tenga en cuenta que//
es un patrón vacío y el resultado no está especificado. Es un trabajo engawk
, lamawk
propia versión de Brian Kernighan, pero no ennawk
,oawk
del cofre de herramientas de la herencia.Alternativamente, use un patrón de rango que coincida con la primera línea (NR igual a 1) hasta la primera coincidencia de 'PPP' en una línea
si la línea debe coincidir exactamente con 'PPP' solo use
Si desea hacer lo mismo para cada archivo en la lista de argumentos, use la variable FNR que se restablece a 1 para la primera línea de cada archivo procesado
fuente
Como OP dijo, su primera línea o palabra de archivo puede contener cualquier palabra (como
PPP
sí misma), por lo que debe verificar eso y evitar que la primera línea coincida y evitarawk
que salga allí.Entonces puedes probar esto:
Fichero de entrada:
Mando:
Salida:
fuente