Usando o Perl:
sudo docker ps | \
tail -n 1 | \
perl -lae '$,="\n";foreach(@F){/tcp,?$/&&push(@x,$_)};print(@x)'
-
-l
: ativa o processamento automático de finalização de linha. Tem dois efeitos separados. Primeiro, ele automaticamente efetua chps $ / (o separador de registro de entrada) quando usado com -n ou -p. Segundo, ele atribui $ \ (o separador de registro de saída) para ter o valor de octnum, de forma que quaisquer instruções de impressão tenham esse separador novamente incluído. Se octnum for omitido, define $ \ para o valor atual de $ /. -
-a
: ativa o modo de preenchimento automático quando usado com um -n ou -p. Um comando split implícito para o array @F é feito como a primeira coisa dentro do loop while implícito produzido por -n ou -p. -
-e
: pode ser usado para inserir uma linha de programa. -
$,="\n"
: define o separador do campo de saída como\n
; -
foreach(@F){/tcp,?$/&&push(@x,$_)}
: para cada elemento de@F
, se o elemento terminar comtcp
seguido por um% opcional,
adiciona o elemento no final de@x
; -
print(@x)
: imprime cada elemento de@x
seguido pelo separador de campo de saída;
% cat in
29ba3137f3e2 java8/local:latest "/bin/bash" 3 hours ago Up 3 hours foo/tcp, 0.0.0.0:8443->8443/tcp, 0.0.0.0:32783->5432/tcp, 0.0.0.0:32782->10523/tcp DEMO-20151118124751
29ba3137f3e2 java8/local:latest "/bin/bash" 3 hours ago Up 3 hours 0.0.0.0:8080->8080/tcp, 0.0.0.0:8443->8443/tcp, 0.0.0.0:32783->5432/tcp, 0.0.0.0:32782->10523/tcp DEMO-20151118124751
29ba3137f3e2 java8/local:latest "/bin/bash" 3 hours ago Up 3 hours 0.0.0.0:8080->8080/tcp, 0.0.0.0:8443->8443/tcp, 0.0.0.0:32783->5432/tcp, 0.0.0.0:32782->10523/tcp DEMO-20151118124751
% tail -n 1 in | perl -lae '$,="\n";foreach(@F){/tcp,?$/&&push(@x,$_)};print(@x)'
0.0.0.0:8080->8080/tcp,
0.0.0.0:8443->8443/tcp,
0.0.0.0:32783->5432/tcp,
0.0.0.0:32782->10523/tcp