AWK正则匹配替换:将.UTT前的/替换为|技术求助
解决路径中/替换为|的正则方案
看来你卡在了针对.utt/.UTT结尾的路径替换斜杠的问题上,我来帮你梳理几种可行的方案,分不同工具场景,你可以按需选用:
先明确核心思路
我们需要先精准定位行中所有以.utt或.UTT结尾的文件路径段,然后只在这些段内把/替换成|,不会影响行内其他内容。
方案1:用 sed 命令(Linux/macOS 终端)
如果习惯用终端处理文件,这个命令可以直接完成批量替换:
sed -E 's/([\/\w\-. ]+\.utt)/echo "\1" | tr "\/" "|" /geI' input_file.txt > output_file.txt
- 细节解释:
-E:启用扩展正则表达式I:不区分大小写,会同时匹配.utt和.UTTe:把替换后的内容作为shell命令执行,这里用tr把匹配到的路径里的/转成|- 正则
[\/\w\-. ]+:允许路径包含空格、下划线、减号等常见字符,如果你的路径有特殊符号,可以自行添加到括号里
方案2:Python 脚本(适合复杂场景)
如果需要更灵活的处理(比如后续还要加其他逻辑),用Python脚本更可控:
import re def process_line(line): # 匹配所有以.utt/UTT结尾的路径,支持包含空格的路径 utt_pattern = re.compile(r'([\/\w\-. ]+\.utt)', re.IGNORECASE) # 对每个匹配到的路径替换/为| def replace_slash(match_obj): return match_obj.group(0).replace('/', '|') return utt_pattern.sub(replace_slash, line) # 读取原文件并处理 with open("your_input_file.txt", "r", encoding="utf-8") as f_in: with open("your_output_file.txt", "w", encoding="utf-8") as f_out: for line in f_in: f_out.write(process_line(line))
方案3:VS Code 可视化替换(小白友好)
如果不想写代码/命令,用VS Code的查找替换功能就能搞定:
- 打开目标文件,按下
Ctrl+H(Windows/Linux)或Cmd+H(Mac)打开替换面板 - 点击面板右上角的「正则表达式」按钮(看起来像
.*) - 查找框输入:
([\/\w\-. ]+\.utt) - 替换框输入:
${/\//|/g:$0} - (可选)如果不需要区分大小写,取消勾选「匹配大小写」按钮
- 点击「替换全部」即可完成所有替换
注意事项
如果你的路径里有其他特殊字符(比如@、#),只需要把这些字符添加到正则的字符集合里(比如把[\/\w\-. ]改成[\/\w\-. @#])就行。
内容的提问来源于stack exchange,提问作者Abrar Ahamed
相关产品推荐
相关产品推荐

