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

如何批量替换文本中-100至-999负数为E-99(Linux/Windows)

批量替换文本文件中-100至-999负数为E-99的实现方案

Linux 系统下的实现方法

单文件替换测试

使用sed命令结合正则表达式,精准匹配数字后接-100至-999的错误格式并替换:

sed -i 's/\([0-9.]\+\)-\([1-9][0-9][0-9]\)/\1E-99/g' test.txt
  • 正则说明:
    • \([0-9.]\+\):捕获前面的数字(包含整数、小数形式)
    • -:匹配错误格式中的连接符
    • \([1-9][0-9][0-9]\):精准匹配100-999的三位数字(第一位非0,避免匹配000这类无效值)
    • \1E-99:将匹配内容替换为捕获的数字部分 + E-99

批量处理所有文本文件

方法1:Shell循环处理当前目录文件

for file in *.txt; do
  # -i.bak会生成原文件的备份(如test.txt.bak),确认替换正确后可执行rm *.txt.bak删除备份
  sed -i.bak 's/\([0-9.]\+\)-\([1-9][0-9][0-9]\)/\1E-99/g' "$file"
done

方法2:递归处理子目录文件

如果需要处理包括子目录在内的所有.txt文件,使用find命令:

find . -type f -name "*.txt" -exec sed -i.bak 's/\([0-9.]\+\)-\([1-9][0-9][0-9]\)/\1E-99/g' {} \;

Windows 系统下的实现方法

PowerShell 批量处理脚本

PowerShell原生支持正则替换,适合批量操作。打开PowerShell并切换到目标文件目录,执行以下命令:

单文件测试

(Get-Content .\test.txt) -replace '(\d+\.?\d*)-([1-9]\d{2})', '$1E-99' | Set-Content .\test.txt

批量处理当前目录所有.txt文件

Get-ChildItem -Filter *.txt | ForEach-Object {
  $content = (Get-Content $_.FullName) -replace '(\d+\.?\d*)-([1-9]\d{2})', '$1E-99'
  $content | Set-Content $_.FullName
  # 可选:生成原文件备份,取消注释即可
  # Copy-Item $_.FullName "$($_.FullName).bak"
}
  • 正则说明:
    • (\d+\.?\d*):捕获前面的数字(整数或带小数)
    • -([1-9]\d{2}):匹配-100到-999的三位负数(第一位非0)
    • $1E-99:替换为捕获的数字部分 + E-99

注意事项

  • Linux下不同发行版的sed参数略有差异:GNU sed直接用-i修改文件;BSD sed需使用-i ''(空参数)
  • Windows下若文件编码特殊,可在Get-Content和Set-Content中添加-Encoding参数指定编码(如-Encoding UTF8)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:03:17