如何从printf输出中获取变量并定义为另外两个变量的值

时间:2015-04-17 16:04:16

标签: linux bash shell printf

我有一个.txt输入文件,它是printf的产物,定义每一行为POV(n)=" sequenceX,yearY"

cat output.PA
POV01="SEQ010,FY15"
POV02="SEQ010,FY16"
POV03="SEQ020,FY15"
POV04="SEQ020,FY16"

如何获取此文件以便我可以将每个POV分别导出为给定行的sequence和fy的变量值?

export POV(n)="$seq,$fy"

我过去常常得到的printf如下:

cat step1
while read -r seq fy; do
        printf 'POV%02d="%s,%s"\n' ${counter} ${seq} ${fy}
        (( counter = counter + 1 ))
done <test_scenario_02.txt > output.PA

如果我输出output.PA,我会得到以下内容:

./step2
POV00=YEAR,
POV01=SEQ010,FY15
POV02=SEQ010,FY16
POV03=SEQ020,FY15
POV04=SEQ020,FY16
POV05=SEQ030,FY15
POV06=SEQ030,FY16
POV07=SEQ030,FY15
POV08=SEQ030,FY16
POV09=SEQ040,FY15
POV10=SEQ040,FY16
POV11=SEQ050,FY15
POV12=SEQ050,FY16
$ cat step2
. ./output.PA
set | grep "^POV"

1 个答案:

答案 0 :(得分:0)

根本不清楚你想要什么,但似乎你正在尝试创建一个包含output.PA中所有值的数组变量。您可能不需要这样做,但这应该有效:

$ pov=($(sed -e 's/[^"]*"//' -e 's/"$//' output.PA))
$ echo ${pov[0]}
SEQ010,FY15
$ echo ${pov[1]}
SEQ010,FY16
$ echo ${pov[2]}
SEQ020,FY15