文本处理 - 如何在Unix中以逗号分隔格式点击字符串后打印行号?

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

我在一个目录中递归地使用了一个字符串

grep -rwnoH "string"  /root/Documents/ | cut -d ":" -f1,2 > input.txt

这给了我如下输出:一个文件input.txt,其内容类似于

/root/Documents/file1.txt:23
/root/Documents/file1.txt:35
/root/Documents/file1.txt:56
/root/Documents/file2.txt:12
/root/Documents/file2.txt:67
/root/Documents/file2.txt:78
/root/Documents/file3.txt:2
/root/Documents/file3.txt:10

我想要这样的东西:

/home/root/Documents/file1.txt:23,35,56
/home/root/Documents/file2.txt:12,67,78
/home/root/Documents/file3.txt:2,10
linux shell unix
1个回答
0
投票

使用datamash命令:

datamash -t : -g 1 unique 2

说明:-t指定字段分隔符,-g 1表示按第一个字段分组,unique 2将为每个组显示不同的值。

但是,行号将按字符排序,10将在2之前排序。

© www.soinside.com 2019 - 2024. All rights reserved.