“合并”路径并在一行中显示所有匹配项

问题描述 投票:0回答:1

我需要帮助,我有:

/usr/include/slang.h:include
/usr/include/slang.h:star
/usr/include/slang.h:load
/usr/include/byteswap.h:include

我必须合并才能在shell中得到结果:

/usr/include/slang.h include star load
/usr/include/byteswap.h include   

我能怎么做 ?

bash shell sh
1个回答
0
投票
$ cat merge.txt 
/usr/include/slang.h:include
/usr/include/slang.h:star
/usr/include/slang.h:load
/usr/include/byteswap.h:include

$ cat merge.sh 
#!/bin/bash

for path in $(awk -F':' '{print $1}' merge.txt | uniq)
do 
    values=$(grep "${path}" merge.txt | awk -F':' '{print $NF}' | tr '\n' ' ')
    echo "${path}" "${values}"
done

输出:

$ ./merge.sh 
/usr/include/slang.h include star load 
/usr/include/byteswap.h include
© www.soinside.com 2019 - 2024. All rights reserved.