Crie uma nova linha acima da última linha e adicione algo lá

0

Como um reverso de awk 'NR==2 {print ""} 1 , que adiciona uma nova linha ao primeiro e imprime o que estiver lá. Eu não posso substituir o número após NR== com um valor fixo porque eu quero poder fazer isso no arquivo, incluindo qualquer quantidade de linhas. Quer dizer, eu suponho que eu poderia fazer algo que conta a quantidade de linhas e então fazer uma variável que é o número da segunda última linha, mas eu não quero "reinventar a roda".

Exemplo de entrada:

1
2
3
4

Exemplo de saída:

1
2
3
something added here
4
    
por DisplayName 12.12.2015 / 01:55

1 resposta

0

Você pode atrasar a impressão por uma linha e usar um bloco END :

awk 'NR > 1 {print line} {line = $0} END {printf "%s\n%s\n", "something added here", line}'

Salvei a linha atual em line e imprimi na próxima iteração. No END block, portanto, line é a última linha, que ainda não foi impressa.

$ printf "%s\n" {1..4} | awk 'NR > 1{print line} {line = $0} END {printf "%s\n%s\n", "something added here", line}'
1
2
3
something added here
4
    
por 12.12.2015 / 02:11