如何用awk将多行数据按首列编号合并为单行?
使用Awk合并分组文本并按编号排序
输入内容
100,a b c 101,d,e f 102,g 103,h 104,i j k
目标输出
100,a,b,c 101,d,e,f 102,g 103,h 104,i,j,k
实现命令
awk ' /^[0-9]/ { if (line != "") print line line = $0 next } { line = line "," $0 } END { print line } ' input.txt | sort -n
命令解释
- 识别分组起始行:用
/^[0-9]/匹配以数字开头的分组标记行,若已有缓存的分组内容则先输出,再将当前行设为新分组的起始内容。 - 追加分组内容:非数字开头的行,直接以逗号分隔追加到当前分组的缓存行末尾。
- 收尾最后一个分组:
END块负责输出最后一个未打印的分组内容。 - 按编号排序:通过管道传递给
sort -n,实现按数字编号升序排列结果。
内容的提问来源于stack exchange,提问作者didi
相关产品推荐
相关产品推荐

