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

如何删除文本文件中*Plasticity与*Hardening标签间的行并插入新数据

我来给你分享几个靠谱的解决方案,不管你习惯用脚本还是命令行工具,都能轻松完成这个文本替换需求:

使用Python脚本实现(适合灵活处理新数据的场景)

如果需要自定义新数据的生成逻辑,或者跨平台使用,Python脚本是最稳妥的选择:

# 定义输入输出文件路径
input_file = "your_input_file.txt"
output_file = "your_output_file.txt"

# 要匹配的起始/结束标签
start_tag = "*Plasticity, dependencies=1"
end_tag = "*Hardening"

# 准备要插入的新数据行(可根据需求自由修改行数和内容)
new_data = [
    "1.11e+06, 50.0, 0.2, 0.01, 0.01, 1., , 0.5",
    "2.22e+06, 60.0, 0.3, 0.01, 0.01, 1., , 0.6",
    "3.33e+06, 70.0, 0.4, 0.01, 0.01, 1., , 0.7"
]

# 逐行处理文件
with open(input_file, 'r') as f_in, open(output_file, 'w') as f_out:
    skip_mode = False
    for line in f_in:
        line_content = line.rstrip('\n')  # 保留原换行逻辑
        if line_content == start_tag:
            # 写入起始标签,然后插入新数据
            f_out.write(f"{line_content}\n")
            for data_line in new_data:
                f_out.write(f"{data_line}\n")
            skip_mode = True
            continue
        if line_content == end_tag:
            # 写入结束标签,关闭跳过模式
            f_out.write(f"{line_content}\n")
            skip_mode = False
            continue
        # 非跳过模式下,正常写入原行
        if not skip_mode:
            f_out.write(f"{line_content}\n")

代码说明:脚本会自动识别两个标签的位置,跳过中间所有旧内容,插入你自定义的新数据,其他行完全保留原格式。

使用sed命令实现(适合Linux/macOS快速命令行操作)

如果习惯用命令行,sed可以快速完成替换,分两种场景:

场景1:新数据保存在单独文件中(比如new_data.txt)

# GNU sed(Linux)
sed -e '/^\*Plasticity, dependencies=1$/,/^\*Hardening$/{//!d; r new_data.txt}' input.txt > output.txt

# macOS sed(需加-E参数,换行符处理略有不同)
sed -E -e '/^\*Plasticity, dependencies=1$/,/^\*Hardening$/{//!d; r new_data.txt' -e '}' input.txt > output.txt

场景2:直接在命令中写少量新数据

sed -e '/^\*Plasticity, dependencies=1$/,/^\*Hardening$/{//!d; a\1.11e+06, 50.0, 0.2, 0.01, 0.01, 1., , 0.5\
2.22e+06, 60.0, 0.3, 0.01, 0.01, 1., , 0.6}' input.txt > output.txt

命令说明:/start/,/end/匹配标签区间,//!d删除区间内除标签外的所有行,r或a\用来插入新内容。

使用awk命令实现(命令行中更灵活的文本处理)

awk比sed更适合处理复杂逻辑,同样支持两种场景:

场景1:新数据保存在单独文件中

awk -v start="*Plasticity, dependencies=1" -v end="*Hardening" '
$0 == start {
    print;
    while ((getline line < "new_data.txt") > 0) print line;
    skip=1; next
}
$0 == end { skip=0; print; next }
!skip { print }
' input.txt > output.txt

场景2:直接在awk中定义新数据

awk -v start="*Plasticity, dependencies=1" -v end="*Hardening" '
BEGIN {
    new_data[1] = "1.11e+06, 50.0, 0.2, 0.01, 0.01, 1., , 0.5"
    new_data[2] = "2.22e+06, 60.0, 0.3, 0.01, 0.01, 1., , 0.6"
}
$0 == start {
    print;
    for (i in new_data) print new_data[i];
    skip=1; next
}
$0 == end { skip=0; print; next }
!skip { print }
' input.txt > output.txt

命令说明:通过标记变量skip控制是否跳过行,遇到起始标签时插入新数据,逻辑清晰易修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:28:10