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

时间:2018-09-05 13:32:25

标签: linux shell unix

我使用递归地在目录中提取字符串

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

1 个答案:

答案 0 :(得分:0)

使用datamash命令:

datamash -t : -g 1 unique 2

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

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