【发布时间】:2019-03-02 03:38:51
【问题描述】:
我希望这可以通过 awk 轻松解决,尽管我无法管理它。
我有一个制表符分隔的多行文本文件。在每一行中,第一个字段中有一个标识符,然后是 0 到 8 个附加字段,其中包含有关此标识符的信息。如:
fileIhave.txt:
LOC107198162 GO:0016021
LOC107198170 GO:0004896 GO:0005515 GO:0016020
LOC107198182 GO:0016787
LOC107198203
LOC107198204 GO:0007160
...
我需要将标识符 (LOC*) 添加/复制到其各自行中包含文本 (GO:*) 的每个字段,并在两侧添加一个带有空格的“=”符号。即
fileIwant.txt
LOC107198162 LOC107198162 = GO:0016021
LOC107198170 LOC107198170 = GO:0004896 LOC107198170 = GO:0005515 LOC107198170 = GO:0016020
LOC107198182 LOC107198182 = GO:0016787
LOC107198203
LOC107198204 LOC107198204 = GO:0007160
...
我可以通过使用awk 'BEGIN{OFS="\t"}$2=$1" = "$2' 对第二个字段(第一次出现的信息)执行此操作,但似乎无法找到应用于该行中其他文本字段的正确方法。另外,如果那里没有文本,我不想将标识符复制到字段中。
【问题讨论】: