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

如何批量读取桌面200个TXT文件并提取指定化学计算参数

批量提取TXT文件中的化学计算参数方案

嘿,我看你已经搞定了桌面200个TXT文件的遍历,现在就差精准揪出那些化学计算参数对吧?给你整理了两种适配你之前尝试过的工具的方案,直接就能上手:

Shell 脚本方案

用grep搭配循环就能快速提取目标行,如果你只需要完整的参数行,这个脚本最省心:

#!/bin/bash
# 替换成你桌面存放TXT文件的实际文件夹路径
TARGET_DIR="$HOME/Desktop/your_chemical_files"

for file in "$TARGET_DIR"/*.txt; do
    echo "=== 来自文件: $(basename "$file") 的参数 ==="
    # 精准匹配所有需要的参数行,直接输出
    grep -E "HEAT OF FORMATION|TOTAL ENERGY|ELECTRONIC ENERGY|CORE-CORE REPULSION|GRADIENT NORM|DIPOLE|POINT GROUP|NO. OF FILLED LEVELS|IONIZATION POTENTIAL|HOMO LUMO ENERGIES|MOLECULAR WEIGHT|COSMO AREA|COSMO VOLUME" "$file"
    echo "" # 用空行分隔不同文件的结果,看起来更清晰
done

要是你只想提取数值部分(比如只拿HEAT OF FORMATION的KCAL值),可以给对应参数加awk处理,举个例子:

# 提取HEAT OF FORMATION的KCAL数值
grep "HEAT OF FORMATION" "$file" | awk '{print "生成热(KCAL/MOL): " $5}'

Ruby 脚本方案

你之前的Ruby代码只是打开了文件但没读取内容,这里给你补全逻辑,还能灵活处理数值提取:

# 替换成你的实际文件夹路径,比如 "/Users/xxx/Desktop/chemical_files/*.txt"
Dir.glob('/Users/your_username/Desktop/chemical_files/*.txt').each do |file_path|
    puts "=== 来自文件: #{File.basename(file_path)} 的参数 ==="
    File.open(file_path, 'r') do |file|
        file.each_line do |line|
            # 匹配目标参数行并输出
            if line.match?(/HEAT OF FORMATION|TOTAL ENERGY|ELECTRONIC ENERGY|CORE-CORE REPULSION|GRADIENT NORM|DIPOLE|POINT GROUP|NO. OF FILLED LEVELS|IONIZATION POTENTIAL|HOMO LUMO ENERGIES|MOLECULAR WEIGHT|COSMO AREA|COSMO VOLUME/)
                puts line.strip
            end

            # 要是需要单独提取某个参数的数值,比如偶极矩
            if (match = line.match(/DIPOLE = (\d+\.\d+) DEBYE/))
                puts "偶极矩: #{match[1]} Debye"
            end
        end
    end
    puts ""
end

小提示

如果想把所有提取的结果汇总到一个文件里:

  • Shell脚本可以在循环里加>> all_parameters.txt,比如把grep ... "$file"改成grep ... "$file" >> all_parameters.txt
  • Ruby脚本可以提前打开一个输出文件,把内容写入进去

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:57:10