首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将变量从awk传递给shell命令?

如何将变量从awk传递给shell命令?
EN

Stack Overflow用户
提问于 2013-12-17 23:30:48
回答 5查看 102.9K关注 0票数 59

我试图从awk中为文件的每一行运行一个shell命令,而shell命令需要一个输入参数。我尝试使用system(),但它没有识别输入参数。

该文件的每一行都是一个文件的地址,我想运行一个命令来处理该文件。因此,对于一个简单的例子,我想对每一行使用' wc‘命令,并将$1传递给wc。

代码语言:javascript
复制
awk '{system("wc $1")}' myfile
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-12-17 23:35:11

你们关系很好。必须将命令行与awk变量连接起来:

代码语言:javascript
复制
awk '{system("wc "$1)}' myfile
票数 73
EN

Stack Overflow用户

发布于 2013-12-18 03:03:05

无法获取awk system()调用的输出,只能获得退出状态。使用吸气线/管道吸气线/变量/管道结构

代码语言:javascript
复制
awk '{
    cmd = "your_command " $1
    while (cmd | getline line) {
        do_something_with(line) 
    }
    close(cmd)
}' file
票数 52
EN

Stack Overflow用户

发布于 2013-12-18 14:09:07

FYI这里介绍了如何使用awk来处理其名称存储在文件中的文件(在本例中提供了类似wc的功能):

代码语言:javascript
复制
gawk '
NR==FNR { ARGV[ARGC++]=$0; next }
{ nW+=NF; nC+=(length($0) + 1) }
ENDFILE { print FILENAME, FNR, nW, nC; nW=nC=0 }
' file

上面使用GNU awk作为ENDFILE。对于其他的awk,只需将值存储在数组中,然后在结束部分的循环中打印。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20646819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档