0

我有一个包含以下值的文件:

ID1 RID1 2 rid1 第 2 部分
 ID1 RID2 1 rid2 第 1 部分
 ID1 RID2 2 rid2 第 2 部分
 ID2 RID3 1 rid3 第 1 部分
 ID2 RID3 2 rid3 第 2 部分
 ID2 RID4 1 rid4 第 1 部分

ID RID 偏移文本。ID、RID、偏移量和文本是制表符分隔的。文本可以是多个单词,中间有空格。

我正在尝试根据 RID 和升序偏移连接它们。

本质上,所需的输出是

ID2 RID3 rid3 part1rid3 part2
ID2 RID4 rid4 第 1 部分
ID1 RID1 rid1 part1rid1 part2
ID1 RID2 rid2 part1rid2 part2

我正在尝试用 awk 做到这一点。这是我的 awk 1 班轮:

猫示例.txt| awk '{line=""; 行 = 行 $4; table[$1"\t"$2]=table[$1"\t"$2] line;} END {for (key in table) print key"\t"table[key];}'

由于某种原因,awk 无法解析 $4 中的所有单词,即它只是选择第一个单词并输出:

ID2 RID3 rid3rid3
ID2 RID4 rid4
ID1 RID1 rid1rid1
ID1 RID2 rid2rid2

如何解析 $4 中的所有单词而不仅仅是第一个单词?

4

2 回答 2

1

我建议类似:

awk -F " " '{key=$1" "$2; value=$4" "$5; if(! key in t){t[key]=value} else {t[key]=t[key]""value}} END {for (key in t){print key" "t[key]}}' file|sort -rt' ' -k1

问候,伊德里斯

于 2013-10-21T22:32:33.690 回答
0

从您自己的脚本的这个更新版本开始:

awk 'BEGIN{FS=OFS=SUBSEP="\t"} {table[$1,$2]=table[$1,$2] $4} END{for (key in table) print key, table[key]}' example.txt

如果这不能满足您的要求,请告诉我们,您需要帮助找出解决方法。

于 2013-10-21T19:35:36.047 回答