GNU/Linux >> Znalost Linux >  >> Linux

Připojte konec řádku k výstupu příkazu

Použijte echo , automaticky připojí nový řádek:

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

Případně můžete zkusit -w možnost, ale zjistil jsem, že to nějak vytiskne vtipné znaky do konzole (ale ne do souboru, naštěstí):

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

Nejjednodušší je přidat nový řádek pomocí echo

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

Používám awk 1 pro to (kde 1 je jen něco, co se vyhodnotí jako pravda):

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

Mělo by to fungovat s gawk, BWK awk / nawk (který je součástí OS X) a mawk (který je součástí Debianu). sed -n p funguje s OS X sed, ale ne s GNU sed.

Alternativa pouze pro Bash:

printf %s\\n "$(cat)"

Všimněte si, že $() odebere všechny řádky od konce, takže například echo $'a\n\n'|printf %s\\n "$(cat)" vytiskne pouze jeden posun řádku.

Můžete také nahradit printf %s\\n s echo , ale například x=-nene;echo "$x" nevytiskne nic v Bash (kromě xpg_echo a režim POSIX jsou povoleny).


Linux
  1. Linuxový příkaz echo

  2. echo:příkaz nenalezen

  3. Zobrazení úplného výstupu příkazu PS

  1. Jak připojit výstup do souboru?

  2. Jak zachovat konce řádků při ukládání výstupu příkazu do proměnné?

  3. Příkazový řádek:Extrahujte podřetězec z výstupu

  1. Bash Echo Příkazový řádek spuštěn na samotném příkazovém řádku (ne ve skriptu)?

  2. $_ vs! $. Poslední argument předchozího příkazu a přesměrování výstupu?

  3. Příkaz pro výstup každého řádku dopředu a poté zpět