Parcialmente sobrescreve em um arquivo através de script

0

vejo

<command> >> <filepath> acrescenta a linha de comando ao arquivo

e

<command> > <filepath> substitui todo o conteúdo do arquivo pelo comando fornecido.

Como passar o comando para o arquivo para que apenas a última linha do arquivo seja sobrescrita?

    
por Karthik C 02.06.2013 / 16:04

1 resposta

1

Isso não é incorporado ao shell da mesma maneira que sobrescrever e anexar. Você precisa fazer isso em duas etapas: primeiro remova a última linha e anexe:

X=$(head -n -1 filepath)
echo "$X" > filepath
command >> filepath

Ou você pode substituir o novo conteúdo de uma só vez:

X=$(head -n -1 test)
(echo "$X"; command) > test

Observe que, em ambos os casos, capturamos as linhas antigas que queremos manter em uma variável primeiro como um comando separado. Isso porque, assim que um comando com um ">" diretiva começa a executar, o shell irá limpar o arquivo, e qualquer tentativa de ler essas linhas será tarde demais.

    
por Paul 02.06.2013 / 16:21