awk通过 system() 函数调用其他命令获取输出

简介: awk通过 system() 函数调用其他命令获取输出

awk 中,如果你想通过 system() 函数调用其他命令并获取其输出,实际上 system() 函数并不会直接返回命令的输出。system() 函数主要用于执行系统命令,并且它的返回值是命令执行的状态(通常是退出状态码,0 表示成功,非零表示有错误)。

如果你确实需要从 system() 调用的命令中捕获输出,并进一步处理这些数据,那么你需要使用其它手段间接实现,例如重定向到临时文件或管道,然后通过 getline 函数读取输出内容:

# 通过临时文件获取输出
{
    "command arg1 arg2 > output.tmp" | getline
    # 现在可以从output.tmp文件中读取数据
    while (getline < "output.tmp") {
        print $0
    }
    close("output.tmp") # 关闭打开的文件
}

# 或者通过管道直接读取到awk变量中
{
    cmd = "command arg1 arg2"
    if ((cmd | getline line) > 0) {
        print line
        while (getline line > 0) {
            print line
        }
    }
    close(cmd) # 关闭与命令关联的管道
}

上面的代码展示了两种方法:

  1. 使用 > 将命令输出重定向到临时文件,然后通过 getline 从文件读取。
  2. 直接通过管道将 system() 替换为命令执行与 getline 结合的方式,这样可以实时接收命令的输出并在 awk 中进行处理。

请注意,第二种方法更有效率,因为它避免了磁盘I/O操作,但需要注意正确关闭与命令关联的管道以防止资源泄露。

目录
相关文章
|
安全 Linux
Linux内核OverlayFS子系统权限提升漏洞(CVE-2023-0386)
Linux内核OverlayFS子系统权限提升漏洞,在Linux内核的 OverlayFS子系统中,当用户将一个具有权限的文件从一个nosuid挂载点复制到另一个挂载点时,未经授权的攻击者可以执行setuid文件,导致权限提升。
645 1
|
Web App开发 数据采集 JSON
Python实现urllib3和requests库使用 | python爬虫实战之五
本节介绍了urllib3库和requests库中的一些方法的使用。
Python实现urllib3和requests库使用 | python爬虫实战之五
|
10月前
|
存储 机器学习/深度学习 编解码
阿里云服务器计算型c7/c8a/c8i/c8y/c9i实例性能、适用场景及价格对比与选择参考
阿里云服务器计算型c7、计算型c8a、计算型c8i、计算型c8y和计算型c9i同属于计算型实例,是目前计算型实例规格中的热门实例规格,通常在阿里云的活动中,计算型实例也主要以这几个实例规格为主,本文为大家介绍c7/c8a/c8i/c8y/c9i实例各自的实例性能、适用场景及价格对比,以供选择参考。
|
数据采集 JSON 测试技术
如何在Python中高效实现CSV到JSON的数据转换
在实际项目中,数据格式转换是常见问题,尤其从CSV到JSON的转换。本文深入探讨了多种转换方法,涵盖Python基础实现、数据预处理、错误处理、性能优化及调试验证技巧。通过分块处理、并行处理等手段提升大文件转换效率,并介绍如何封装为命令行工具或Web API,实现自动化批量处理。关键点包括基础实现、数据清洗、异常捕获、性能优化和单元测试,确保转换流程稳定高效。
671 83
|
数据可视化 数据处理 Python
如何使用Python实现一个基于均线的交易策略
【10月更文挑战第9天】本文介绍了如何使用Python实现一个基于均线的交易策略。主要步骤包括导入所需库(如`pandas`、`numpy`和`matplotlib`),加载股票或期货的历史数据,计算均线和其他指标,实现交易策略逻辑,以及可视化交易结果。示例代码展示了如何根据均线交叉点进行开仓、止损和止盈操作,并提供了注意事项,如数据来源、交易成本和风险管理。
1030 7
|
缓存 Linux Shell
Docker资源(CPU/内存/磁盘IO/GPU)限制与分配指南
什么是cgroup? cgroups其名称源自控制组群(control groups)的简写,是Linux内核的一个功能,用来限制、控制与分离一个进程组(如CPU、内存、磁盘输入输出等)。 什么是Docker资源限制?
|
存储 监控 数据安全/隐私保护
GlusterFS存储卷创建
GlusterFS存储卷创建
386 7
|
监控 Unix Linux
|
安全 Android开发 数据安全/隐私保护
Android 如何获取系统签名 并使用系统签名
Android 如何获取系统签名 并使用系统签名
978 2
|
存储 算法 网络性能优化
【AXI】解读AXI协议事务属性(Transaction Attributes)
【AXI】解读AXI协议事务属性(Transaction Attributes)
【AXI】解读AXI协议事务属性(Transaction Attributes)