我有一个包含以下值的文件:
ID1 RID1 2 rid1 part2 ID1 RID2 1 rid2 part1 ID1 RID2 2 rid2 part2 ID2 RID3 1 rid3 part1 ID2 RID3 2 rid3 part2 ID2 RID4 1 rid4 part1
ID RID偏移文本。 ID,RID,偏移和文本以制表符分隔。文本可以是多个单词,中间有空格。
我试图根据RID和递增偏移来连接它们。
基本上所需的输出是
ID2 RID3 rid3 part1rid3 part2 ID2 RID4 rid4 part1 ID1 RID1 rid1 part1rid1 part2 ID1 RID2 rid2 part1rid2 part2
我想用awk做这个。这是我的awk 1班轮:
cat example.txt| awk '{line=""; line = 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中的所有单词而不仅仅是第一个单词?
答案 0 :(得分: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
此致 伊德里斯
答案 1 :(得分: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
如果这不符合您的要求,请告诉我们,您需要帮助找出解决方法。