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

Linux下提取filename.txt指定标识后数据的AWK/SED实现需求

提取文件中指定标识后的对应数据(Linux环境)

方法1:用AWK实现(推荐,逻辑更清晰)

AWK能轻松处理这种“先捕获前一个标识内容,再匹配后一个标识输出对应组合”的需求,直接用变量暂存33A::ISN的数据,遇到16E的行时组合输出:

# 假设33A::ISN和其后的数据是空格分隔(比如行是"xxx 33A::ISN ABC123 xxx")
awk '/33A::ISN/{isn=$2} /16E:AVVV\/\/FMMM\//{price=substr($0, index($0,"16E:AVVV//FMMM/")+17); print isn","price}' filename.txt

如果33A::ISN和数据是连在一起的(比如"xxx33A::ISNABC123xxx"),把获取isn的部分改成:

/33A::ISN/{isn=substr($0, index($0,"33A::ISN")+8)}

方法2:用SED实现(利用保持空间处理上下文)

SED需要借助保持空间暂存33A::ISN的数据,再和16E的内容组合:

命令说明:

  • 匹配到33A::ISN的行时,先把整行存入保持空间,然后删除标识前面的内容只保留对应数据,再交换保持空间和模式空间(保持空间留着ISN数据,模式空间恢复原行)。
  • 匹配到16E:AVVV//FMMM/的行时,把保持空间的ISN数据追加到当前行后,将标识替换成逗号、去掉换行符,最后打印组合后的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:05:36