对于给定且唯一的字符串,如何查找所有相应的字符串

时间:2014-11-29 14:24:56

标签: bash sorting awk uniq

# cat lun.txt
/dev/sdb 60002ac00000000000000f0f0000799d
/dev/sdc 60002ac00000000000000fdb0000799d
/dev/sdd 60002ac00000000000000f0f0000799d
/dev/sde 60002ac00000000000000fdb0000799d
#

如何列出给定WWID的所有设备,如下所示:

60002ac00000000000000f0f0000799d 
    /dev/sdb
    /dev/sdd
60002ac00000000000000fdb0000799d
    /dev/sdc
    /dev/sde

我尝试过使用sort,uniq和awk。但没有运气

2 个答案:

答案 0 :(得分:3)

这样的东西
$ awk '{ device[$2]=device[$2]"\n"$1 } END{ for(i in device) print i,device[i] }' lun.txt
60002ac00000000000000fdb0000799d 
/dev/sdc
/dev/sde
60002ac00000000000000f0f0000799d 
/dev/sdb
/dev/sdd
  • device[$2]=device[$2]"\n"$1创建一个由wwid索引的数组device$2附加$1,第一列包含数组元素

  • for(i in device) print i,device[i]打印数组的内容

答案 1 :(得分:0)

我刚添加了一个标签(\ t)以获得所需的输出。

awk '{ device[$2]=device[$2]"\n\t"$1 } END{ for(i in device) print i,device[i] }' lun.txt
60002ac00000000000000fdb0000799d
        /dev/sdc
        /dev/sde
60002ac00000000000000f0f0000799d
        /dev/sdb
        /dev/sdd