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' infileawk, así que no doy otras herramientas.1es 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, lamawkpropia versión de Brian Kernighan, pero no ennawk,oawkdel 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
PPPsí misma), por lo que debe verificar eso y evitar que la primera línea coincida y evitarawkque salga allí.Entonces puedes probar esto:
Fichero de entrada:
Mando:
Salida:
fuente