【发布时间】:2011-10-27 10:53:29
【问题描述】:
如果它们与 ID 匹配,我想将多行不同长度的值合并为一行。
输入示例为:
ID: Value:
a-1 49
a-2 75
b-1 120
b-2 150
b-3 211
c-1 289
d-1 301
d-2 322
所需的输出示例是:
ID: Value:
a 49,75
b 120,150,211
c 289
d 301,322
我将如何编写一个 awk 表达式(或 sed 或 grep 之类的)来检查 ID 是否匹配,然后将所有这些值打印到一行上?我当然可以打印 将它们放入不同的列并稍后将它们组合起来,所以问题只是有条件地打印 ID 是否匹配且不开始新行。
【问题讨论】:
-
ID: Value:是输入的一部分吗? ID 后面总是有-<digit>吗?输入中是否有一个或两个空格? -
是否保证所有
a-lines 都会被分组?我的意思是,是否有可能成为a-line,然后是b-line,然后是另一个a-line,例如? -
我可以很容易地对它们进行分组 - 实际数据的形式是 6 位数字,即 000000-1 000005-1 000005-2 000010-1 000010-2 000010-3 我可以取下标题并重新添加它(无论如何我都会这样做,因为我正在重新制作列)并且数据是空格分隔的,但也可以轻松更改谢谢
-
另外一个澄清 - 索引号上升到两位数,但不是三位(我认为 000065-13 是最高的)并且 ID 本身上升到大约 500,000(568025 是最高)
-
在 ID 和 value 之间的输入中是否有一个或两个空格?