Anexa quebra de linha à saída do comando

5

Eu tenho um comando de linha única que faz uma solicitação de curl para verificar o status do servidor e, em seguida, envia o resultado para um arquivo de log. Mas o problema é que o resultado retornado não tem quebra de linha e, portanto, o arquivo de log desordena quando o comando grava no arquivo de log na próxima vez.

curl -s "http://myserver.com/api?param=1&param=2" | sudo tee -a /var/log/myserver.log

Eu gosto de manter isso em um comando de linha única. Qualquer sugestão é bem vinda. Obrigado pelo seu tempo.

    
por GooDoo 13.05.2013 / 09:40

5 respostas

7

Use echo , ele anexará automaticamente uma nova linha:

echo "'curl -s "http://myserver.com/api?param=1&param=2"'" | sudo tee -a /var/log/myserver.log

Como alternativa, você pode tentar a opção -w , mas descobri que ela de alguma forma imprime caracteres engraçados no console (mas não no arquivo, por sorte):

curl -s "http://myserver.com/api?param=1&param=2" -w "\n" | sudo tee -a /var/log/myserver.log
    
por 13.05.2013 / 09:55
3

O mais simples é apenas acrescentar uma nova linha com echo

curl -s " link " | sudo tee -a /var/log/myserver.log & & echo "" > > /var/log/myserver.log

    
por 13.05.2013 / 10:00
1

Eu uso awk 1 para isso (onde 1 é apenas algo que é avaliado como verdadeiro):

$ printf a|awk 1
a
$ printf a\n|awk 1
a
$ 

Ele deve funcionar com o gawk, o BWK awk / nawk (que vem com o OS X) e o mawk (que vem com o Debian). sed -n p funciona com o sed do OS X, mas não com o GNU sed.

Uma alternativa somente de Bash:

printf %s\n "$(cat)"

Observe que $() remove todos os feeds de linha do final, por exemplo, echo $'a\n\n'|printf %s\n "$(cat)" imprime apenas um avanço de linha.

Você também pode substituir printf %s\n por echo , mas por exemplo x=-nene;echo "$x" não imprime nada no Bash (a menos que xpg_echo e o modo POSIX estejam ativados).

    
por 22.03.2014 / 17:43
0

Outra sintaxe usando echo:

commands... | { cat; echo; } | ...
    
por 11.05.2017 / 00:21
0

Adicione a opção -w "\n" ou coloque

-w "\n"

no seu ~/.curlrc

    
por 13.03.2018 / 08:46