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

正则处理连字符分隔文本:交换字段后按姓名分组插入空行

实现方案

你可以根据使用场景选择下面两种方案:

方案1:awk命令行处理(适合批量处理大文件)

直接执行以下命令即可得到目标结果:

awk -F ' - ' '{split($2, name_arr, " "); cur_surname = name_arr[length(name_arr)]; if(prev_surname != "" && prev_surname != cur_surname) print ""; print $0; prev_surname = cur_surname}' 输入文件路径 > 输出文件路径

逻辑说明:

  • 以-作为字段分隔符,拆分每行得到第二个字段为完整姓名
  • 拆分完整姓名取最后一个词作为分组依据(姓氏,和你示例的分组规则匹配)
  • 比对当前行姓氏与上一行姓氏,不一致时先输出空行再输出当前行,保证组间有空行分隔
  • 如果你需要按完整全名分组,直接把分组依据替换为第二个字段$2即可

方案2:编辑器正则替换(适合小文本手动处理)

适用于VS Code、Notepad++等支持多行正则匹配的编辑器,操作前确保你的文本已经是同姓氏连续排列的状态:

  1. 查找规则:(^.*? - .*? (\S+) - .*\n)(?!.*? - \2 - )
  2. 替换规则:$1\n

逻辑说明:

  • 捕获整行内容和对应的姓氏分组
  • 通过负向前瞻判断下一行姓氏与当前是否不同,匹配到组的最后一行时自动在末尾追加一个换行,实现组间插入空行的效果
  • 如果你需要按完整全名分组,把查找规则改为(^.*? - (.*?) - .*\n)(?!.*? - \2 - )即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:45:04