Parece-me que awk
atinge uma linha enorme que resultaria em 32767 ou mais campos. Eu não posso reproduzir isso com o meu awk
, embora:
> echo | awk 'BEGIN {for(i=1;i<100000;i++) printf "%d ",i}; { print ""; }' >file
> awk '{ print $50000; }' too_long_line_for_awk.txt
50000
> awk --version
GNU Awk 4.1.0, API: 1.0
Você poderia usar uma ferramenta mais robusta contra linhas longas. Você precisa decidir qual é o tamanho máximo do primeiro campo. Se nós assumirmos 100 então você pode tentar isto:
cut -b -100 file | awk ...
Além disso (mas isso não está relacionado ao seu problema), sua construção awk | grep | awk
não faz sentido. Isso seria feito assim:
awk '$1 ~ "/ns/" {sub("^.*/ns/","/ns/",$1); if( !seen[$1]++ ) print $1}' \
file_name >test1.txt
sugestão de depuração
Como Ramesh apontou: Pode ser interessante encontrar a linha que está causando o problema. O número da linha do problema deve ser um daqueles que seguem o número impresso (ou gravado em um arquivo) por este comando:
awk '{ print NR;}' | tail -n 1 >crashline.txt
Se awk
esvaziar seus buffers antes de "travar", então deve ser o próximo número (+1).