如何使用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)
补充说明
- 替换代码中的
your_input_file.sh和your_output_file.sh为实际文件名。 - 若存在不在优先级列表中的字段,想要将其放到排序结果末尾,可修改排序逻辑:
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
相关产品推荐
相关产品推荐

