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

如何仅导出含特定值字符串及w-*类值的最后出现实例

文本筛选需求解决方案

搞定这个文本筛选需求很简单!我针对你提出的两个规则,结合给出的示例值,整理了具体的实现方案:

1. 导出包含特定值的字符串的最后出现项

如果需要提取包含某个特定关键词的字符串里最后出现的那一条,可以用awk工具快速实现——它会遍历所有行,记录匹配到的最后一行内容。

比如,假设你要筛选包含m的字符串的最后出现项,执行下面的命令:

# 假设你的文本内容存在input.txt文件中
awk '/m/ {last_match = $0} END {print last_match}' input.txt

针对你的示例值,这条命令会输出:prepr-uat-fair-m

如果要筛选其他特定值,只需要把/m/里的m换成你要的关键词就行,比如筛选包含sed-1-4的最后一项,就改成/sed-1-4/,输出会是fair-sit-sed-1-4-w-3。

2. 对w-*格式的字符串,仅保留每个类别最后出现的实例

这里的“类别”指的是w-前缀前面的部分(比如fair-3451-、fair-4bb9-都属于不同类别),我们可以通过分组记录的方式,只保留每个类别下最后出现的w-*格式字符串。

用awk实现的命令如下:

awk -F'w-' '{
    # 只处理包含w-的字符串
    if (NF >= 2) {
        # 提取w-前面的部分作为类别标识
        category = $1
        # 用类别作为键,记录最后出现的该行内容(后续行覆盖前面的)
        last_in_category[category] = $0
    }
} END {
    # 遍历所有类别,输出每个类别的最后一项
    for (cat in last_in_category) {
        print last_in_category[cat]
    }
}' input.txt

针对你的示例值,执行后会输出:

  • fair-3451-w-1
  • fair-4bb9-w-3
  • fair-sit-sed-1-4-w-3
  • prepr-uat-fair-w-1

结合两个规则的场景

如果需要同时满足“包含特定值”和“w-*类别取最后项”,只需要在awk的判断里加上关键词匹配即可。比如筛选包含sed-1-4的w-*类别最后一项:

awk -F'w-' '/sed-1-4/ && NF >= 2 {
    category = $1
    last_in_category[category] = $0
} END {
    for (cat in last_in_category) {
        print last_in_category[cat]
    }
}' input.txt

输出结果会是:fair-sit-sed-1-4-w-3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:58:04