Eu tenho um comando muito simples jot -r 4 0 255
que basicamente gera 4 números aleatórios no intervalo de 0 a 255.
> jot -r 4 0 255
66
14
244
155
Como posso formatar a saída para algo assim 66.14.244.155
:?
Responder1
Use um caractere de ponto final como uma string separadora entre os resultados do jot
comando. Abra o terminal e digite:
jot -s "." 4 0 255
Dos resultados de man jot
:
-scorda Imprimir dados separados por string. Normalmente, as novas linhas separam os dados.
Em alguns outros casos, um caractere de espaço seria uma boa string separadora.
Responder2
Fiz um arquivo de teste, t
contendo saída semelhante
$ cat t
66
14
244
155
Existem várias maneiras diferentes de reformatar a saída, canalizadas a partir de qualquer comando ou cat
como estes exemplos:
use bash
read
assim$ cat t | while read i; do echo -n "$i."; done; echo 66.14.244.155.
para ler cada entrada e ecoá-la com um ponto final e sem nova linha (adicionando um eco simples no final para obter uma nova linha final).
tr
traduza cada nova linha em um ponto, novamente com um ponto final e sem nova linha$ cat t | tr '\n' '.' 66.14.244.155.
o mesmo, mas com um tempo muito curto
awk
$ cat t | tr '\n' '.' | awk 'ORS="."' 66.14.244.155.
tr
(ouawk
) novamente, mas corrija o ponto final em uma nova linha$ cat t | tr '\n' '.' | sed 's/.$/\n/' 66.14.244.155
tudo
sed
isso éaparentemente mais rápido e menos complexosem ponto final e uma nova linha$ cat t | sed -e ':a; N; $!ba; s/\n/./g' 66.14.244.155
paste
pode usar suas opçõess
erial ed
elimiter, sem ponto final e uma nova linha$ cat t | paste -sd "." - 66.14.244.155