我希望通过使用awk FIELDWIDTHS =“9 1 2”的函数将以下输入读入数组。我希望索引为1美元。我是Linux和awk的新手,并且只有非常少的脚本编写经验,所以我提前道歉,冒犯任何有这么低级别问题的人。我希望把它放到一个函数中,我可以定义MyArray [index] = $ 2或MyArray [index] = $ 3,以便我可以在以后调用这些值.....
# input-data.txt
#
# pos(1,9) =$1
# pos(10,1)=$2
# pos(11,2)=$3
#
123456789A01
789123456A02
349751268A04
#
答案 0 :(得分:1)
这是gawk的一个特色
https://www.gnu.org/software/gawk/manual/html_node/Constant-Size.html
运行:awk -f script.awk file
<强> script.awk 强>
#! /bin/awk -f
BEGIN{FIELDWIDTHS="9 1 2"}
{
for(i=1; i<=NF; i++){
myArray[NR][i]=$i
}
}
END{
print "Rec No.--> Field No.--> Value";
for(i in myArray){
for( j in myArray[i]){
print i"-->"j"-->" myArray[i][j]
}
}
}
myArray 是一个Array数组,其中第一个索引是“Record Number”,第二个索引是“Field Number”