como encontrar a última palavra no arquivo e ignorar espaços vazios

4

como encontrar a última palavra no arquivo, mesmo depois da palavra, há linhas vazias

o caso

Eu tentei isso para encontrar a última palavra

tail -1  /tmp/requests.txt

mas sem saída

Eu experimento a seguinte abordagem

 awk 'END {print $NF}'   /tmp/requests.txt

mas sem saída

Eu capturei a palavra somente por tail -6 (porque a palavra era 6 linhas vazias antes do final do arquivo

 tail -6  /tmp/requests.txt
 "IN_PROGRESS"

então qual é o caminho para capturar a última palavra no caso de termos espaço vazio ou não?

resultados esperados

 echo $Last_word
 IN_PROGRESS
    
por yael 03.01.2018 / 15:47

3 respostas

7

Comece a ler a partir da parte inferior e imprima a última palavra da primeira linha contendo pelo menos "alguma coisa":

tac file | awk 'NF{print $NF; exit}'

Por exemplo:

$ cat -vet file     # note the spaces and tabs
hello$
bla ble bli$
   $
^I$
$ tac file | awk 'NF{print $NF; exit}'
bli

Se você não tiver tac , use a mesma lógica ao ler o arquivo normalmente:

awk 'NF{last=$NF} END{print last}' file

Ou seja, armazene a última palavra sempre que houver "alguma coisa" em uma linha. Por fim, imprima o valor armazenado.

    
por 03.01.2018 / 15:52
1

Acompanhe a última palavra da última linha não vazia e imprima no final:

awk '/\S/{ s=$NF; } END{ print(s); }'

Não é necessário manter todo o arquivo na memória para imprimir suas linhas na ordem inversa ou algo assim.

    
por 03.01.2018 / 18:27
0
sed -n '$p' example.txt | awk '{print $NF}'

Isto irá obter a última linha do arquivo e exibir a última coluna na última linha.

    
por 03.01.2018 / 16:07