You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过模式匹配提取文本文件前6列及第7列中的AC字段值

提取固定列与指定键值对字段的解决方案

你之前尝试的方法因为第7列里AC=的位置不固定(第一条在最前面,第二条在中间),拆分字段后没法稳定拿到AC的值。其实用单条awk命令就能一次性搞定,不需要生成中间文件,更高效:

awk '{match($7, /AC=[^;]+/); print $1, $2, $3, $4, $5, $6, substr($7, RSTART, RLENGTH)}' file1

命令解释:

  • match($7, /AC=[^;]+/):在第7列(分号分隔的键值对列)中,匹配以AC=开头、直到遇到分号为止的字符串。awk的match函数会自动设置RSTART(匹配起始位置)和RLENGTH(匹配长度)两个变量。
  • substr($7, RSTART, RLENGTH):从第7列中截取刚才匹配到的AC=xxx部分。
  • 最后把前6列和截取到的AC字段一起打印,就能得到你想要的结果。

验证结果:

输入文件file1内容:

1 123 ab456 A G PASS AC=0.15;FB=1.5;BV=45; 0|0 0|0 0|1 0|0
4 789 ab123 C T PASS FB=90;AC=2.15;BV=12; 0|1 0|1 0|0

执行命令后输出:

1 123 ab456 A G PASS AC=0.15
4 789 ab123 C T PASS AC=2.15

完全符合你的期望!

内容的提问来源于stack exchange,提问作者rij

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 03:27:28