Salve a primeira linha em uma variável
awk 'NR==1 {first = $0} END {print; print first}' file
dado file
como
line 1
line 2
line 3
line 4
line 5
então
$ awk 'NR==1 {first = $0} END {print; print first}' file
line 5
line 1
Eu pesquisei, mas falhei com uma resposta. Eu quero imprimir a última linha (ou registro) em um arquivo; em seguida, imprima a primeira linha usando apenas awk. Eu sei imprimir a primeira linha:
NR == 1{print}
e última linha
END{print}
No entanto, como posso mudar as posições? É mesmo possível? Eu só recebo erros quando tento fazer isso. Existe uma maneira de integrar o
NR == 1{print}
comando no comando END? Mais uma vez, eu só quero fazer isso no awk. Obrigado!
O AWK possui a função getline()
, que permite avançar para a próxima linha. O status de saída desta linha é zero quando não podemos avançar mais, ou seja, chegamos ao fim do arquivo. Assim, a ideia básica que podemos usar é armazenar a primeira linha na variável, acompanhar a linha atual e continuar tentando avançar com getline
. Se não pudermos - imprima as variáveis na ordem desejada.
$ cat input.txt
first line
middle line
last line
$ awk 'NR==1{first=$0};{while (getline line); printf "%s\n%s\n",line,first}' input.txt
last line
first line
Tags awk