当我运行以下命令时,我希望获得 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
命令更改为 just uniq
,那么我会得到正确的输出。
来自 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
开关它会省略这些行(因为它们不是唯一的):因此,在您的情况下,由于您的 IP 地址重复了两次,因此它不会随
-u
开关显示,这是正常的(但不是很直观,因为这类工具经常出现这种情况)。