【发布时间】:2019-05-16 11:56:18
【问题描述】:
我有一个大的 csv 文件,其中很少有列值是十六进制的。我需要将它们转换为十进制。 CSV 文件非常大。所以如果我处理每一行,那么执行脚本需要很多时间。所以我想知道如何使用 awk 命令并行完成此操作
如果我逐行处理代码,它就可以工作。
我像这样处理文件。
while read -r line;
do
start_time=`echo "$line"|awk -F "," '{ print $1 }'`
end_time=`echo "$line"|awk -F "," '{ print $2 }'`
st_time=$((16#$start_time))
en_time=$((16#$end_time))
然后我将必填字段回显到输出文件。
示例输入文件:
16a91f90539,16a91f931a9,e,0
16a91f90bab,16a91f931a9,e,0
预期输出:
1557227177273,1557227188649,e,0
1557227178923,1557227188649,e,0
我需要知道如何在 awk 中使用语句 "((16#$start_time))" 。
我试过了
awk -F',' '{OFS=",";}{print '"(($1#16))"','$en_time',$3'
但是这种语法不起作用。
【问题讨论】:
-
由于不清楚,请务必将您的示例(代码)包装在代码标签中。
-
以后,请使用编辑菜单中的
{}工具对所选文本进行正确的格式设置;-) 祝您好运。