我让这段脚本正常工作。 This是我想要的:
输入
3.76023 0.783649 0.307724 8766.26
3.76022 0.764265 0.307646 8777.46
3.7602 0.733251 0.30752 8821.29
3.76021 0.752635 0.307598 8783.33
3.76023 0.79528 0.307771 8729.82
3.76024 0.814664 0.307849 8650.2
3.76026 0.845679 0.307978 8802.97
3.76025 0.826293 0.307897 8690.43
脚本
!/bin/bash
awk -F ', ' '
{
for (i=3; i<=10; i++) {
if (i==NR) {
npc1[i]=sprintf("%s", $1);
npc2[i]=sprintf("%s", $2);
npc3[i]=sprintf("%s", $3);
npRs[i]=sprintf("%s", $4);
print npc1[i],npc2[i],\
npc3[i], npc4[i];
}
}
} ' p_walls.raw
echo "${npc1[100]}"
但是现在我不能在awk之外使用那些数组npc1[i]
。最后一个回声什么都没打印不是可能的,还是我错过了什么?
答案 0 :(得分:2)
i
永远不会是100,那么您为什么要访问npc1[100]
?答案 1 :(得分:1)
(樱桃蛋糕总是很好!)
很抱歉,但@yi_H的所有答案和评论都是正确的。
但是在awk中将2组数据加载到2个独立的数组中确实没有问题,即
awk '{
if (FILENAME == "file1") arr1[i++]=$0 ;
#same for file2; }
END {
f1max=++i; f2max=++j;
for (i=1;i<f1max;i++) {
arr1[i]
# put what you need here for arr1 processing
#
# dont forget that you can do things like
if (arr1[i] in arr2) { print arr1[i]"=arr2[arr1["i"]=" arr2[arr1[i]] }
}
for j=1;j<f2max;j++) {
arr2[j]
# and here for arr2
}
}' file1 file2
你必须填写arr1 [i]和arr2 [j]的实际处理。
另外,请在周末获取一本awk书,并在周一之前启动并运行。这很简单。您可以从grymoire.com/Unix/awk.html
中找到它我希望这会有所帮助。