Quero imprimir todas as linhas do arquivo até a palavra correspondente, aconselhe como fazer isso com o awk
por exemplo
Quero imprimir todas as linhas até a palavra PPP
observe que a primeira linha deve 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 (deseja imprimir até KJGFGHJ)
cat file.txt1
HG
KJGFGHJ
KKKK
então eu preciso pegar
HG
KJGFGHJ
sed
:sed '/PPP/q' infile
awk
, então eu não dou outras ferramentas.1
é como{print $0}
. Observe também que//
é um padrão vazio e o resultado não é especificado. É trabalhogawk
,mawk
versão própria de Brian Kernighan, mas não denawk
,oawk
no baú de ferramentas de herança.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
se a linha deve corresponder exatamente a 'PPP', use apenas
Se você deseja fazer o mesmo para cada arquivo na lista de argumentos, use a variável FNR que redefine 1 para a primeira linha de cada arquivo processado
fonte
Como o OP disse que sua primeira linha ou palavra de arquivo pode conter qualquer palavra (como
PPP
ela mesma), você precisa verificar isso e impedir a correspondência da primeira linha e evitar aawk
saída de lá.Então você pode tentar o seguinte:
Arquivo de entrada:
Comando:
Resultado:
fonte