linux - 将第一个字段作为前缀添加到文本文件中的所有其他字段
问题描述
我希望这可以通过 awk 轻松解决,尽管无法管理它。
我有一个制表符分隔的多行文本文件。在每一行中,第一个字段中有一个标识符,然后是 0 到 8 个附加字段,其中包含有关此标识符的信息。如:
文件Ihave.txt:
LOC107198162 GO:0016021
LOC107198170 GO:0004896 GO:0005515 GO:0016020
LOC107198182 GO:0016787
LOC107198203
LOC107198204 GO:0007160
...
我需要将标识符 (LOC*) 添加/复制到其各自行中包含文本 (GO:*) 的每个字段,并在两侧添加一个带有空格的“=”符号。IE
文件Iwant.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'
但似乎找不到应用于行中其他文本字段的正确方法。另外,如果那里没有文本,我不想将标识符复制到字段中。
解决方案
你可以试试这个 awk 脚本:
awk '{for(i=2;i<=NF;i++) $i=$1 " = " $i}1' OFS='\t' fileIhave.txt
该脚本循环遍历该行中的所有字段(第一个字段除外)并将第一个字段添加到所有字段。
推荐阅读
- typescript - 如何在打字稿的类中声明枚举?
- python - 如何在apache默认conf文件中添加多个python-path
- node.js - 如何识别和处理单个话语中的多个意图
- azure - 创建新应用程序
- regex - 我需要用 sed 转义哪些字符才能使这个正则表达式工作
- angular - Google App Engine 的部署问题
- java - Eclipse IDE 错误,cmd 显示“Java.lang.classnotfoundexception:version”
- angular - Karma/Jasmine 强制导入无关组件
- c++ - 将 Python 数据读入 C++ 代码
- angular - Angular 6:错误:找不到“object”类型的不同支持对象“[object Object]”。NgFor 只支持绑定到 Array 等 Iterables