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操作,但需要注意正确关闭与命令关联的管道以防止资源泄露。

目录
相关文章
|
2月前
|
Perl
在 `awk` 脚本中初始化变量
在 `awk` 脚本中初始化变量
19 2
|
3月前
|
物联网 Linux 流计算
EasyLogger--不一样的打印输出
EasyLogger--不一样的打印输出
|
5月前
|
Shell
shell获取命令输出和返回值
shell获取命令输出和返回值
917 0
|
2月前
|
存储 数据处理 C语言
awk复杂用法变量与数组
awk复杂用法变量与数组
17 4
|
9月前
|
Linux BI Perl
awk指令用法详解
awk指令用法详解
120 0
|
11月前
|
Python
一日一技:print函数也能写文件
一日一技:print函数也能写文件
97 0
print 方法输出
print 方法输出
106 0
print 方法输出
|
Shell Linux
连shell的基本输出都不会,还写什么脚本?echo和printf命令总结
连shell的基本输出都不会,还写什么脚本?echo和printf命令总结
连shell的基本输出都不会,还写什么脚本?echo和printf命令总结
|
缓存 Java Go
自带的 print 函数居然会报错?(下)
最近用 Python 写了几个简单的脚本来处理一些数据,因为只是简单功能所以我就直接使用 print 来打印日志。
|
运维 测试技术 Python
自带的 print 函数居然会报错?(上)
最近用 Python 写了几个简单的脚本来处理一些数据,因为只是简单功能所以我就直接使用 print 来打印日志。

热门文章

最新文章