将来自文件的值放入全局变量(AWK 脚本)
Put a value comes from a file in a global variable (AWK script)
我的脚本 awk 条目中有几个文件 (.csv)。我将这些文件分隔在其他文件 (.csv) 中,然后借助 sql 加载程序 (oracle) 将这些文件的数据插入到数据库中。
我想在文件中放入一个值以放入我可以在 my awk script
中随处使用的全局变量。
您知道如何在 AWK script
.
中创建全局变量吗
提前致谢
示例:file.csv
NUMBER1;TEXT1;DATE1
NUMBER2;TEXT2;DATE1
NUMBER3;TEXT3;DATE1
NUMBER4;TEXT4;DATE1
NUMBER5;TEXT5;
我想用这些信息创建一个新文件 (result.csv
)
NUMBER1;DATE1
NUMBER2;DATE1
NUMBER3;DATE1
NUMBER4;DATE1
NUMBER5;DATE1
查看 awk 的 BEGIN 和 END:
awk 'BEGIN { globalvar = "x" } {} '
begin 块执行一次,因此请在那里设置变量。
看这里:http://code.linuxnix.com/2013/02/awk-scripting-10-begin-and-end-block-examples.html
您可以使用 -v
选项为您的 awk 脚本定义变量。例如,假设您有环境变量 $DATE.
$ DATE=$(date)
$ awk -v date="$DATE" '{print date}' <<< "ignore"
Mon Sep 14 10:27:59 EDT 2015
由于您的示例 file.csv 已经包含所有字段,所以我不确定您要传递给脚本的变量是什么。但是,假设您想要 file.csv 中的第一个字段并使用日期变量生成 result.csv,您可以这样做
awk -F";" -v OFS=";" -v date="$DATE" '{print , date}' file.csv > result.csv
看起来这就是您要执行的操作:
$ awk 'BEGIN{FS=OFS=";"} NR==1{date=$NF} {print ,date}' file
NUMBER1;DATE1
NUMBER2;DATE1
NUMBER3;DATE1
NUMBER4;DATE1
NUMBER5;DATE1
获取 Arnold Robbins 的书 "Effective Awk Programming",第 4 版。
我的脚本 awk 条目中有几个文件 (.csv)。我将这些文件分隔在其他文件 (.csv) 中,然后借助 sql 加载程序 (oracle) 将这些文件的数据插入到数据库中。
我想在文件中放入一个值以放入我可以在 my awk script
中随处使用的全局变量。
您知道如何在 AWK script
.
提前致谢
示例:file.csv
NUMBER1;TEXT1;DATE1
NUMBER2;TEXT2;DATE1
NUMBER3;TEXT3;DATE1
NUMBER4;TEXT4;DATE1
NUMBER5;TEXT5;
我想用这些信息创建一个新文件 (result.csv
)
NUMBER1;DATE1
NUMBER2;DATE1
NUMBER3;DATE1
NUMBER4;DATE1
NUMBER5;DATE1
查看 awk 的 BEGIN 和 END:
awk 'BEGIN { globalvar = "x" } {} '
begin 块执行一次,因此请在那里设置变量。
看这里:http://code.linuxnix.com/2013/02/awk-scripting-10-begin-and-end-block-examples.html
您可以使用 -v
选项为您的 awk 脚本定义变量。例如,假设您有环境变量 $DATE.
$ DATE=$(date)
$ awk -v date="$DATE" '{print date}' <<< "ignore"
Mon Sep 14 10:27:59 EDT 2015
由于您的示例 file.csv 已经包含所有字段,所以我不确定您要传递给脚本的变量是什么。但是,假设您想要 file.csv 中的第一个字段并使用日期变量生成 result.csv,您可以这样做
awk -F";" -v OFS=";" -v date="$DATE" '{print , date}' file.csv > result.csv
看起来这就是您要执行的操作:
$ awk 'BEGIN{FS=OFS=";"} NR==1{date=$NF} {print ,date}' file
NUMBER1;DATE1
NUMBER2;DATE1
NUMBER3;DATE1
NUMBER4;DATE1
NUMBER5;DATE1
获取 Arnold Robbins 的书 "Effective Awk Programming",第 4 版。