我有一个包含 2 列的文件:键/值。
k1 v1
k2 v2
k3 v3
etc.
我正在尝试编写一个脚本来通过这个文件,拉出匹配的键/值供我测试。我的问题是我不知道如何拉出匹配集来运行我的测试。
我有两次失败的尝试,所以希望有人能指出我不正确的语法/逻辑并纠正我。
1)我尝试使用awk提取键和值并使用for循环进行处理
k=`awk '{print $1}' file`
v=`awk '{print $2}' file`
for i in {0..10}
do
echo ${k[$i]}
echo ${v[$i]}
done
但是,我不知道如何正确访问/存储这些值。一切都以数组的元素 0 结束。有没有办法在这个设置中指定,从 k 和 v 中获取“元素”0,从 k 和 v 中获取元素 1,等等从列表中串联?
2)我也尝试使用while循环来阅读这个
while read line
do
k=`awk '{print $1}' $line`
v=`awk '{print $2}' $line`
done < file
然而,这种技术似乎也是错误的,因为 shell 抱怨没有文件 kX 并说:
awk: cmd. line:1: fatal: cannot open file `k1' for reading (No such file or directory)
awk: cmd. line:1: fatal: cannot open file `k1' for reading (No such file or directory)
(repeating for all keys)
技术 #1 是我试图跳出框框思考来解决这个问题,尽管保持 2 个列表同步来完成这项工作似乎更难。我认为技巧#2对我来说更有意义
1) Read the line
2) Separate out the key and value
3) Use the key and value to run my test
4) Go to step 1 until EOF
希望有人可以帮助我解决我混乱的语法,或者教我一种比我正在做的更有效的新技术#3。
在此先感谢您的帮助。