【发布时间】:2019-12-22 02:17:35
【问题描述】:
我正在尝试使用 AWK 删除第二列中第二个下划线之后的字符串。
这是我的输入数据:
OTU10015 uncultured_Ascomycota_C31_F02_Lineage=Root Fungi
OTU10071 Fusarium_sp._NRRL_52720_Lineage=Root Fungi
OTU10082 Colletotrichum_dematium_BBA_62147_Lineage=Root Fungi
预期的输出是:
OTU10015 uncultured_Ascomycota Fungi
OTU10071 Fusarium_sp. Fungi
OTU10082 Colletotrichum_dematium Fungi
我试过这段代码:
awk '{sub(/([^_]).*/,"",$2);print $1,$2,$3}' file1> file2
我从另一个帖子中找到了这段代码并尝试修改它, 但它会删除整个第二列。
如何进一步修改代码?提前致谢!
【问题讨论】:
-
也许你想用 [^\s]* 替换 .*(匹配任何东西)(匹配除空格或制表符之外的任何东西)
-
regex101.com 可以方便地测试正则表达式。我觉得你在这里的正则表达式很奇怪。
-
^([^\s_]*_[^\s_]*).*应该做的工作 -
我的错误对不起......然后你需要使用gensub
-
如果你不能在 awk 中使用捕获的组......我不能帮助你......无论如何我讨厌 awk,更喜欢使用 perl 来轻松完成这项工作
标签: awk