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

如何替换TXT文件每行中匹配文本的首个实例?

替换TXT文件每行中匹配字符串的首次出现

嘿,这个需求用sed命令就能轻松搞定——它默认的替换行为就是只处理每行里匹配字符串的第一次出现,完美贴合你的需求!

核心命令示例

假设你要把每行里的/Volumes/Documents - Part 1/首次出现的内容替换成/Your/Target/Path/,可以这么写:

sed 's#/Volumes/Documents - Part 1/#/Your/Target/Path/#' foo.txt > new_foo.txt

命令细节解释

  • s/old/new/是sed的替换语法,默认只替换每行第一个匹配的old字符串,这正是你要的效果
  • 这里我用#作为分隔符,避免和路径里的/冲突,省去了转义的麻烦;如果你习惯用/当分隔符,记得给路径里的/加转义符\,比如:
    sed 's/\/Volumes\/Documents - Part 1\//\/Your\/Target\/Path\//' foo.txt > new_foo.txt
    

直接修改原文件(谨慎操作!)

如果你想直接修改原文件而不是输出到新文件,记得先备份!然后用-i参数:

  • Linux系统:
    sed -i 's#/Volumes/Documents - Part 1/#/Your/Target/Path/#' foo.txt
    
  • macOS系统:
    sed -i '' 's#/Volumes/Documents - Part 1/#/Your/Target/Path/#' foo.txt
    

效果演示

拿你给出的行举例:

415ccf1e05fb5985d2f719deabec7bb5d22aeaac7b82cca885010b12d483d997 /Volumes/Documents - Part 1/folder/Volumes/Documents - Part 1/another folder/Volumes/Documents - Part 1 BU/fedora linux.7z

替换后会变成:

415ccf1e05fb5985d2f719deabec7bb5d22aeaac7b82cca885010b12d483d997 /Your/Target/Path/folder/Volumes/Documents - Part 1/another folder/Volumes/Documents - Part 1 BU/fedora linux.7z

可以看到只有第一个目标路径被替换,后面的完全保留。

注意事项

如果你的匹配字符串里包含正则特殊字符(比如.、*、+),记得用\转义,比如要匹配BU.,就得写成BU\.。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:35:48