例子是这个
192.168.1.1 xyz_user
192.168.5.1 ddd_user
192.168.1.1 abc_user
192.168.6.1 byd_user
我需要的是输出。
192.168.1.1 xyz_user,abc_user
192.168.5.1 ddd_user
192.168.6.1 byd_user
我应该如何处理?
答案 0 :(得分:0)
为此使用awk
工具
awk '{ Usr[$1]= (Usr[$1]!=""?Usr[$1] "," $2: $2) }
END { for (x in Usr) print x, Usr[x] }' infile
192.168.5.1 ddd_user
192.168.6.1 byd_user
192.168.1.1 xyz_user,abc_user
在这里,我们将第二列值作为属于同一IP的用户添加到一个数组值中,该IP是其在该数组中的键标识符。
三元条件(Usr[$1]!=""?Usr[$1] "," $2: $2)
用于在找到相同相关IP的每个用户之间添加逗号,并且如果该IP的值仍未设置,则可以防止出现逗号。
答案 1 :(得分:0)
假设您将结果输出到临时文件 /tmp/bashTest.txt 中。
您可以按以下方式获得想要的结果:
for ipAddress in $( cat /tmp/bashTest.txt |awk '{print $1}' |sort -u ); do
echo -ne "$ipAddress\t";
for name in $( cat /tmp/bashTest.txt |grep -e "^$ipAddress" |awk '{print $2}' ); do
echo -ne "$name,";
done;
echo "";
done
让我知道是否足以解决您的问题。