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

如何用sed批量将目录下多文件中指定字符串后首字符大写?

使用sed批量处理文本文件:将name=后的首个字母转为大写

单个文件处理命令

先从单个文件的处理开始,这条sed命令就能精准完成需求:

sed -E 's/(name=)([a-z])/\1\U\2/g' your_file.txt

命令详解

让我拆解一下每个部分的作用:

  • -E:启用扩展正则表达式,让我们能更清晰地使用分组匹配
  • (name=):第一个捕获分组,专门匹配我们指定的前缀,确保只处理这个前缀后的内容,完全忽略其他不含name=的=字符
  • ([a-z]):第二个捕获分组,只匹配前缀后的小写字母——已经大写的字母会被自动跳过,不会重复修改
  • \1\U\2:替换规则,\1保留原前缀name=,\U是sed的内置大写转换命令,把\2捕获到的小写字母转成大写
  • g:全局标记,确保处理文件中所有出现的name=,而不只是第一个

原地修改文件

如果想要直接修改原文件(而不是输出到终端),加上-i参数(注意:macOS系统需要写成-i ''):

# Linux系统
sed -i -E 's/(name=)([a-z])/\1\U\2/g' your_file.txt

# macOS系统
sed -i '' -E 's/(name=)([a-z])/\1\U\2/g' your_file.txt

批量处理同一目录下的所有文本文件

要一次性处理目录里所有.txt文件,可以用shell循环:

# Linux系统
for file in *.txt; do
  sed -i -E 's/(name=)([a-z])/\1\U\2/g' "$file"
done

# macOS系统
for file in *.txt; do
  sed -i '' -E 's/(name=)([a-z])/\1\U\2/g' "$file"
done

如果你的文件不是.txt后缀,把*.txt换成对应的通配符即可(比如*.conf,或者用*处理所有文件,但要注意避开非文本文件)

示例效果

假设原文件内容是:

name=alice
age=25
name=bob
name=David
title=engineer

处理后会变成:

name=Alice
age=25
name=Bob
name=David
title=engineer

可以看到,只有name=后的小写首字母被转成大写,已大写的David不受影响,其他含=的行完全没被改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:43:33