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

如何使用awk提取txt文件每个段落中以-分隔的编程语言名称

解决方案

你遇到的问题核心有两点:

  1. 按行处理时,折行的条目会被拆成多条处理,产生多余输出
  2. 早期段落模式的用法只取第一个字段,没有匹配正确的名称分隔规则

正确实现代码

直接运行以下gawk命令即可:

gawk '
BEGIN {
    RS = ""          # 启用段落模式,以空行作为不同条目的分隔符
}
{
    # 匹配当前条目开头到第一个 " - " 之间的内容作为语言名称
    if (match($0, /^(.+?) +- /, res)) {
        # 去除名称首尾的空白字符后输出
        gsub(/^\s+|\s+$/, "", res[1])
        print res[1]
    }
}
' language.TXT

如果需要单行版本:

gawk -v RS='' 'match($0, /^(.+?) +- /, r) {gsub(/^\s+|\s+$/, "", r[1]); print r[1]}' language.TXT

效果说明

针对你给出的示例输入,上述命令会直接输出:

P+
P4
PABC

完全符合提取语言名称的需求,哪怕语言名称包含多个空格分隔的单词,只要名称后跟着-的分隔规则,都可以正确提取。


内容的提问来源于stack exchange,提问作者Jesús Santoyo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:39:03