Como anexar a saída de um comando ao final de um arquivo de texto?
478
Use em >>
vez de >
ao direcionar a saída para um arquivo:
your_command >> file_to_append_to
Se file_to_append_to
não existir, será criado.
Exemplo:
$ echo "hello" > file
$ echo "world" >> file
$ cat file
hello
world
echo
remove as novas linhas da string. Como você anexa a um arquivo uma string que contém novas linhas?Para
append
um arquivo, use>>
então a saída deve ser
Para
overwrite
um arquivo, use>
então a saída é
hello tom
fonte
Você pode usar o operador >>. Isso acrescentará dados de um comando ao final de um arquivo de texto.
Para testar isso, tente executar:
Faça isso algumas vezes e execute:
Você verá que o seu texto foi anexado várias vezes ao arquivo textfile.txt.
fonte
Use
command >> file_to_append_to
para anexar a um arquivo.Por exemplo
echo "Hello" >> testFile.txt
CUIDADO: se você usar apenas um único
>
, substituirá o conteúdo do arquivo. Para garantir que isso nunca aconteça, você pode adicionarset -o noclobber
ao seu.bashrc
.Isso garante que, se você digitar acidentalmente
command > file_to_append_to
um arquivo existente, ele irá alertá-lo de que o arquivo já existe. Exemplo de mensagem de erro:file exists: testFile.txt
Assim, quando você o usar
>
, permitirá apenas criar um novo arquivo, não substituir um arquivo existente.fonte
Use o
>>
operador para anexar texto a um arquivo.fonte
O uso de tee com a opção -a (--append) permite anexar vários arquivos de uma só vez e também usar o sudo (muito útil ao anexar arquivos protegidos). Além disso, é interessante se você precisar usar outros shells além do bash, pois nem todos os shells suportam os operadores> e >>
Este tópico tem boas respostas sobre tee
fonte
para toda a pergunta:
isso acrescentará 720 linhas (30 * 24) ao o.txt e depois renomeará o arquivo com base na data atual.
Execute o procedimento acima com o cron a cada hora ou
fonte
Eu usaria printf em vez de eco, porque é mais confiável e processa a formatação como nova linha
\n
corretamente.Este exemplo produz uma saída semelhante ao eco nos exemplos anteriores:
No entanto, se você substituísse printf por echo neste exemplo, echo trataria \ n como uma string, ignorando a intenção
fonte
Eu sugiro que você faça duas coisas:
>>
no seu shell script para anexar conteúdo a um arquivo específico. O nome do arquivo pode ser corrigido ou usando algum padrão.fonte
Por exemplo, seu arquivo contém:
se você quiser acrescentar no final do arquivo, lembre-se de espaços entre 'text' >> 'filename'
E para substituir o conteúdo do arquivo:
fonte
cat
... é completamente maluca. (Está vazio porque você acabou de redirecionar a saída padrão para um arquivo.) #