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

如何使用Ansible或Shell逐行读取文件 每行后追加原值+1内容

实现方案

提供Shell命令和Ansible两种落地方式,都满足逐行读取数值存为变量、追加原值+1结果的需求:

Shell 实现

优先用awk完成,逻辑简洁执行效率高,无需额外编写循环逻辑:

  • 终端预览处理结果,不修改原文件:
awk '{print $0, $0+1}' text.txt
  • 处理后直接覆盖原文件:
awk '{print $0, $0+1}' text.txt > tmp.txt && mv tmp.txt text.txt

awk逐行遍历文件时,会自动将当前行内容存入内置变量$0,执行算术运算时自动识别数值类型,直接完成+1计算后按「原值 计算结果」的格式输出即可。
如果需要和给出的示例结果完全匹配(跳过最后一行12349的处理),加行号判断即可,比如文件共5行时执行:

awk 'NR<5{print $0, $0+1}' text.txt

Ansible 实现

通过Playbook完成文件读取、逐行计算、写回全流程,以下是处理被控端文件的示例:

- name: 数值文本逐行追加计算结果
  hosts: your_target_hosts
  tasks:
    - name: 读取目标路径的文件内容
      ansible.builtin.slurp:
        src: /path/to/text.txt
      register: file_raw

    - name: 逐行读取数值计算并拼接新内容
      ansible.builtin.set_fact:
        new_file_content: "{{ new_file_content | d('') + current_line + ' ' + (current_line | int + 1) | string + '\n' }}"
      loop: "{{ file_raw.content | b64decode | splitlines() | select('match', '^[0-9]+$') | list }}"
      loop_control:
        loop_var: current_line

    - name: 写回处理后的内容到原文件
      ansible.builtin.copy:
        content: "{{ new_file_content }}"
        dest: /path/to/text.txt

流程说明:第一步通过slurp模块拉取被控端文件内容注册为变量,base64解码后按行拆分,过滤空行和非数值行;循环时每行数值存入current_line变量,转整数完成+1计算后和原值拼接,最终将拼接完成的完整内容通过copy模块写回目标路径。如果需要处理控制端本地文件,将文件读写模块替换为本地执行类模块即可,逐行计算逻辑无需调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:06:25