当我使用uniq -u时,我得不到任何输出,但为什么?

当我运行以下命令时,我希望获得ASG成员实例的IP地址:

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 '\"|,' ) 

出于某种原因,我得不到输出。

但是,如果我将uniq -u命令更改为uniq -u ,那么我将得到正确的输出。

从uniq的男人:

 -u, --unique only print unique lines 

没有uniq命令,输出是:

  172.51.39.73 172.51.39.73 172.51.39.73 

所以看起来(由uniq的人),如果我只想得到一个输出,我必须使用uniq -u

任何人都知道为什么命令是这样的? 如果我使用“-u”开关,那是不会输出的?

这不是uniq所做的。 没有-u开关,它将多个后续(!)相同的行组合成一行,而用-u开关省略这些行(因为它们不是唯一的):

 sven@linux:~$ cat uniq.txt Line1 ## these two lines are not unique. Line1 Line2 Line1 sven@linux:~$ uniq uniq.txt Line1 Line2 Line1 sven@linux:~$ uniq -u uniq.txt Line2 Line1 

所以,就你的情况而言,由于你的IP地址重复两次,所以不会用-u开关显示,这是正常的(但不是很直观,因为这种工具往往是这种情况)。