gpt4 book ai didi

linux - awk 脚本不能与 gsub $10 一起正常工作

转载 作者:太空宇宙 更新时间:2023-11-04 12:07:06 25 4
gpt4 key购买 nike

我有很多套用信需要生成。

    $>cat debug-form-letter
The first field is $1, the second $2, the third $3,
the 10th field is $10,but the 10th correct value is varA.


$> cat debug-replace-value
var1|var2|var3|var4|var5|var6|var7|var8|var9|varA|varB

$> cat debug-replace-form-letter.awk
BEGIN {FS = "|"
while (getline <"debug-form-letter")
line[++n] = $0
}
{for (i = 1; i <= n; i++) {
s = line[i]
for (j = 1; j <= NF; j++)
gsub("\\$"j, $j, s)
print s
}
}

--我调用

    $> awk -f debug-replace-form-letter.awk debug-replace-value 

--10 我想变成这样

    The first field is var1, the second var2, the third var3,

the 10th field is varA,but the 10th correct value is varA.

--20 但我明白了

    The first field is var1, the second var2, the third var3,

the 10th field is var10,but the 10th correct value is varA.

上面的$10不对,变成了$1加0,我试着用双引号和 单引号,它也不起作用。

$11 变成 $1 加 1。

我的 awk 是 4.1.3 ,我更新到最新版本它也不起作用。

    $> awk -V
GNU Awk 4.1.3, API: 1.1
Copyright (C) 1989, 1991-2015 Free Software Foundation.

我的脚本有什么问题?我怎样才能让它工作?

最佳答案

将内部 for 循环更改为

for (j = NF; j >= 1; j--)

在您的情况下,$1$10 有机会匹配之前匹配。

关于linux - awk 脚本不能与 gsub $10 一起正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50322499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com