-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