0

我想用 bash 脚本重新排列一些行。

输入:

Name1 127.0.0.1
Name2 127.0.0.2
Name2 127.0.0.5
Name2 127.0.0.8
Name3 127.0.0.3

输出:

Name1 127.0.0.1
Name2 127.0.0.2, 127.0.0.5, 127.0.0.8
Name3 127.0.0.3

有没有一种聪明的方法可以用“awk”或“sed”等来做到这一点?谢谢!

4

1 回答 1

1

这个适用于bash. 它提取所有 IP 并按适当的名称对它们进行分组

declare -A ips

while read name ip; do
    if [ -n "${ips[$name]}" ]; then
        ips[$name]="${ips[$name]}, $ip"
    else
        ips[$name]="$ip"
    fi
done

for i in "${!ips[@]}"; do
    echo "$i ${ips[$i]}"
done

你可以调用它

bash script.sh <input.txt
于 2013-02-21T09:02:26.683 回答