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

Bash如何用字符串分隔符切割文本 仅匹配最后一次出现的分隔符

Bash匹配最后一次指定分隔符提取前缀内容方案

原命令问题说明

你之前使用的awk -F 'BSSID' '{print $1}' file命令逻辑是将每行的BSSID作为字段分隔符切割后取第一个字段,会匹配所有行中出现的BSSID字符,不符合「匹配完整分隔符最后一次出现位置、取位置前所有内容」的需求。

实现方案

方案1:awk两次遍历实现(性能更优,适合大文件)

awk -v sep=' BSSID              STATION            PWR   Rate    Lost    Frames  Notes  Probes' 'NR==FNR{if($0==sep) line=FNR; next} FNR < line' yourfile yourfile

逻辑说明:

  • 第一次遍历文件,记录完整匹配分隔符的最后一行行号
  • 第二次遍历文件,只输出行号小于分隔符行号的所有内容

方案2:tac+sed组合实现(写法更简洁)

tac yourfile | sed '1,/ BSSID              STATION            PWR   Rate    Lost    Frames  Notes  Probes/d' | tac

逻辑说明:

  • tac将文件内容按行倒序输出
  • sed删除从倒序后第一行到匹配分隔符行之间的所有内容
  • 再次用tac将剩余内容倒回原顺序,就是分隔符之前的所有内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:36:07