我试图从awk中为文件的每一行运行一个shell命令,而shell命令需要一个输入参数。我尝试使用system(),但它没有识别输入参数。
该文件的每一行都是一个文件的地址,我想运行一个命令来处理该文件。因此,对于一个简单的例子,我想对每一行使用' wc‘命令,并将$1传递给wc。
awk '{system("wc $1")}' myfile发布于 2013-12-17 23:35:11
你们关系很好。必须将命令行与awk变量连接起来:
awk '{system("wc "$1)}' myfile发布于 2013-12-18 03:03:05
无法获取awk system()调用的输出,只能获得退出状态。使用吸气线/管道或吸气线/变量/管道结构
awk '{
cmd = "your_command " $1
while (cmd | getline line) {
do_something_with(line)
}
close(cmd)
}' file发布于 2013-12-18 14:09:07
FYI这里介绍了如何使用awk来处理其名称存储在文件中的文件(在本例中提供了类似wc的功能):
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,只需将值存储在数组中,然后在结束部分的循环中打印。
https://stackoverflow.com/questions/20646819
复制相似问题