gpt4 book ai didi

unix - 在 AWK 命令中从配置文件传递输入参数

转载 作者:行者123 更新时间:2023-12-01 01:48:27 24 4
gpt4 key购买 nike

我是 unix shell 脚本的新手。
我需要解析固定长度的数据文件并转换为逗号分隔符。
我设法做到了这一点。通过使用下面的代码:

awk '{
one=substr($0,1,1)
two=substr($0,2,10)
three=substr($0,12,4)
four=substr($0,16,2)
rest=substr($0,18)
printf ("%s,%s,%s,%s,%s\n", one, two, three, four, rest)
}' data.txt > out.txt

数据.txt:
k12582927001611USNA
k12582990001497INAS
k12583053001161LNEU

输出.txt:
k,1258292700,1611,US,NA
k,1258299000,1497,IN,AS
k,1258305300,1161,LN,EU

问题是我需要阅读
配置文件中的列位置。

我的配置文件(configfile.txt)如下:
one=substr($0,1,1)
two=substr($0,2,10)
three=substr($0,12,4)
four=substr($0,16,2)
rest=substr($0,18)

为了满足要求,我创建了如下脚本:
configparam=`cat configfile.txt`
awk '{
$configparam
printf ("%s,%s,%s,%s,%s\n", one, two, three, four, rest)
}' data.txt > out.txt

但它不工作。这里有人可以告诉我实现这一目标的正确方法吗?

最佳答案

我已将其重组为
cat cfg.awk

{ 
one=substr($0,1,1)
two=substr($0,2,10)
three=substr($0,12,4)
four=substr($0,16,2)
rest=substr($0,18)
}
cat printer.awk
{ printf ("%s,%s,%s,%s,%s\n", one, two, three, four, rest) }

运行方式
awk -f cfg.awk -f printer.awk data.txt

输出
k,1258292700,1611,US,NA
k,1258299000,1497,IN,AS
k,1258305300,1161,LN,EU

唯一的区别是您需要添加开/关 { .. } (花括号)围绕您的 var=substr代码。

IHTH

关于unix - 在 AWK 命令中从配置文件传递输入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46610032/

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