-2
我想读一个文件这样从文件中读取 - awk的
1.23213213
0.12321321
-1.12321321
0.23232322
到一个变量,或阵列在主{}代码某处使用它。 但我想使用它,如果这个文件存在。我如何检查它是否已经存在,如果不存在,那么不要使用该变量或数组?
我想读一个文件这样从文件中读取 - awk的
1.23213213
0.12321321
-1.12321321
0.23232322
到一个变量,或阵列在主{}代码某处使用它。 但我想使用它,如果这个文件存在。我如何检查它是否已经存在,如果不存在,那么不要使用该变量或数组?
我不完全理解你想要什么来实现的,但也许这样的事情可能对你有用:
它处理由行的文件行并保存每一个阵列中的,关键是行号,所以你保持秩序。在END
部分中,检查处理了多少行,并获取文件是否包含内容。
awk '{ line[ FNR ] = $0 } END { if (FNR > 0) { print "File" } else { print "NO file" } }' infile
编辑评论:
但awk
您可以处理来自命令行许多文件。
BEGIN {
...
}
## Processing of first file in command line.
FNR == NR {
a[ FNR ] = $0
next
}
## Processing of second file in command line
FNR < NR {
## Check if array 'a' has the values you want and use them
## 'for(...)variable += a[i]' or whatever.
}
运行脚本,如:
awk -f script.awk first_file.txt second_file.txt
但如果first_file.txt
不存在,awk将一个错误抱怨。
原始代码类似于:BEGIN {...} {...} infile。但是我想在{...}部分使用另一个文件中的一些常数。到目前为止,它看起来像这样:BEGIN {a [1] = 1.23213213; a [2] = 0.12321321; a [3] = - 1.12321321; a [4] = 0.23232322;} ... {... for(.. 。)variable + = a [i]; ...} – user1116360 2011-12-29 12:59:04
我正在考虑类似的东西,但我不确定它是否是一种好方法:BEGIN {while((getline x <“./some/infile”)> 0)} {... for( ...)可变+ = X [I]; } – user1116360 2011-12-29 13:05:08
嗨,你建议的代码不起作用...如果我之前有这一行,可能会有问题:NR == 1 {...}? – user1116360 2011-12-31 13:45:02