linux - awk 将命令输出保存到变量

标签 linux scripting awk

我需要对某个文件的每行执行一个命令。例如:

file1.txt 100 4
file2.txt 19 8

所以我的 awk 脚本需要执行类似的东西

command $1 $2 $3

并保存 command $1 $2 $3 的输出,因此 system() 将不起作用,getline 也不会。 (如果我这样做,我就无法通过管道输出。)

这个问题的限制是只使用awk。 (我已经有了 bashscriot + awk 的解决方案...但我只想要 awk...只是想了解更多相关信息)

最佳答案

使用 getline 有什么问题?

$ ./test.awk test.txt
# ls -F | grep test
test.awk*
test.txt

# cat test.txt | nl
     1  ls -F | grep test
     2  cat test.txt | nl
     3  cat test.awk

# cat test.awk
#!/usr/bin/awk -f
{
        cmd[NR] = $0
        while ($0 | getline line) output[NR] = output[NR] line RS
}
END {
        for (i in cmd) print "# " cmd[i] ORS output[i]
}

关于linux - awk 将命令输出保存到变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1864529/

相关文章:

linux - 试图找到一个支持 Groovy for Linux 的 IDE

linux - 如何使用 pyodbc/unixODBC 在 python3 中连接来自 Informix 数据库的选择数据

shell - shell脚本中的基本名称命令

c - C 程序中与 awk 语法冲突

linux - 更改 AWK 条件 block 内的 Shell 脚本变量值

java - bash 命令等待 TCP 端口打开

linux - Centos 7无法访问文件目录和文件

ios - .lldbinit 在 xCode 中不起作用

linux - 如何从Linux中的字符串中提取以用户定义的特殊字符开头和结尾的子字符串?

正则表达式在 OS X 终端中批量重命名文件