Quando executo o seguinte comando, espero obter os endereços IP das instâncias do membro ASG:
current_servers=$(aws ec2 describe-instances --instance-ids $(aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names "${asgname}" --region $region | grep InstanceId | awk -F: '{print $2}' | tr -d '\"|,' | tr -d '\n') --region $region | grep "PrivateIpAddress" | grep -v '\[' | awk -F: '{print $2}' | uniq -u | tr -d '\"|,' )
Por algum motivo, não recebo saída.
Mas se eu alterar o uniq -u
comando para apenas uniq
, obterei a saída correta.
Do homem do uniq:
-u, --unique
only print unique lines
Sem o comando uniq, a saída é:
172.51.39.73
172.51.39.73
172.51.39.73
Portanto, parece (pelo homem do uniq) que, se eu quiser obter apenas uma ocorrência da saída, tenho que usar uniq -u
.
Alguém sabe por que o comando age assim? que está me dando nenhuma saída se eu usar a opção "-u"?
Não é isso que
uniq
faz. Sem o-u
switch, ele combina várias linhas idênticas subsequentes (!) em uma linha e, com o-u
switch, omite essas linhas (já que elas não são únicas):Portanto, no seu caso, como seu endereço IP é repetido duas vezes, ele não será exibido com o
-u
switch e isso é normal (mas não muito intuitivo, como costuma acontecer com esse tipo de ferramenta).