Antes que o shell inicie o processamento de quaisquer dados, ele precisa ter certeza de que todas as entradas e saídas estão alinhadas.
Portanto, no seu caso, usar > foo.txt
basicamente diz ao sistema: "crie um (novo) arquivo chamado foo.txt
e coloque toda a saída desse comando nesse arquivo".
O problema é que, como você descobriu, isso elimina o conteúdo anterior.
Relacionado, >>
será anexado a um arquivo existente.
Atualizar :
Aqui está uma solução usando sed
, manuseie com cuidado:
sed -i '2,$d' foo.txt
Ele excluirá as linhas 2 para "last" no local no arquivo foo.txt
. É melhor tentar isso em um arquivo que você pode perder primeiro:)
Esta versão ligeiramente modificada do comando manterá uma cópia do original com a extensão .bak
:
sed -i.bak '2,$d' foo.txt
Você pode especificar qualquer seqüência de caracteres (ou um único caractere) após a alteração da linha de comando -i
para o nome do arquivo "backup" (ou seja, original).