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

如何使用Python重新排序文本文件中的指定配置命令行

实现指定命令行的重新排序

核心思路

先定义你需要的字段优先级顺序,筛选出目标命令行后按该优先级排序,最后保留原文件其他内容不变,将排序后的命令行回填到原位置。

代码实现

# 定义排序优先级,顺序越靠前的字段对应的命令行排得越前
priority_order = ["isUp", "parameterAlpha", "domain", "address"]

# 读取原shell文件内容
with open("your_input_file.sh", "r") as input_file:
    all_lines = input_file.readlines()

# 筛选并排序目标命令行
target_lines = [line.strip() for line in all_lines if line.strip().startswith("set line dnsConfig")]
# 提取每行第四个字段,以其在优先级列表中的索引作为排序依据
sorted_target_lines = sorted(target_lines, key=lambda x: priority_order.index(x.split()[3]))

# 重建文件内容,保留非目标行的原始位置
output_lines = []
target_idx = 0
for line in all_lines:
    if line.strip().startswith("set line dnsConfig"):
        output_lines.append(sorted_target_lines[target_idx] + "\n")
        target_idx += 1
    else:
        output_lines.append(line)

# 将处理后的内容写入新文件(建议操作前备份原文件)
with open("your_output_file.sh", "w") as output_file:
    output_file.writelines(output_lines)

补充说明

  1. 替换代码中的your_input_file.sh和your_output_file.sh为实际文件名。
  2. 若存在不在优先级列表中的字段,想要将其放到排序结果末尾,可修改排序逻辑:
def get_sort_key(line):
    parts = line.split()
    if len(parts) >= 4:
        key = parts[3]
        return priority_order.index(key) if key in priority_order else len(priority_order)
    return len(priority_order)

sorted_target_lines = sorted(target_lines, key=get_sort_key)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:13:20