Tente:
$ awk '1;/PPP/{exit}' file
AAA
BBB
JJJ
OOO
345
211
BBB
OOO
OOO
PPP
Eu quero imprimir todas as linhas do arquivo até a palavra correspondente por favor, conselhos como fazer isso com o awk
por exemplo
Eu quero imprimir todas as linhas até que a palavra PPP
observe que a primeira linha pode ser diferente de AAA (qualquer palavra)
cat file.txt
AAA ( the first line/word chuld be any word !!!!! )
BBB
JJJ
OOO
345
211
BBB
OOO
OOO
PPP
MMM
(((
&&&
então eu preciso pegar isso
AAA
BBB
JJJ
OOO
345
211
BBB
OOO
OOO
PPP
outro exemplo (queira imprimir até KJGFGHJ)
cat file.txt1
HG
KJGFGHJ
KKKK
então eu preciso pegar
HG
KJGFGHJ
Como alternativa, use um padrão de intervalo correspondente à primeira linha (NR igual a 1) até a primeira correspondência de 'PPP' em uma linha
awk 'NR==1,/PPP/' file
se a linha deve corresponder exatamente a 'PPP', use somente
awk 'NR==1,/^PPP$/' file
Se você quiser fazer o mesmo para cada arquivo na lista de argumentos, use a variável FNR que é redefinida para 1 na primeira linha de cada arquivo processado
awk 'FNR==1,/PPP/' file1 file2 ...
Como o OP disse que sua primeira linha ou palavra de arquivo pode conter qualquer palavra (como PPP
), então você precisa verificar isso e evitar que a primeira linha corresponda e evite que o awk
saia daqui. / p>
Você pode tentar isso:
PPP # the first line/word chuld be any word !!!!! )
BBB
$$$
JJJ
OOO
PPP
345
PPP
%%%
awk '1;/PPP/{if (NR>1) exit}' file
PPP # the first line/word chuld be any word !!!!! )
BBB
$$$
JJJ
OOO
PPP