将固定宽度文件读入数组

时间:2016-05-31 16:32:27

标签: arrays awk

我希望通过使用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
#

1 个答案:

答案 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”