我的脚本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{FS=OFS=";"} NR==1{date=$NF} {print $1,date}' file
NUMBER1;DATE1
NUMBER2;DATE1
NUMBER3;DATE1
NUMBER4;DATE1
NUMBER5;DATE1
获取Arnold Robbins的《Effective Awk Programming》第四版
查看BEGIN和END for awk:
awk 'BEGIN { globalvar = "x" } {} '
begin块只执行一次,所以在这里设置变量。
请看这里:http://code.linuxnix.com/2013/02/awk-scripting-10-begin-and-end-block-examples.html
您可以使用-v
选项为awk脚本定义变量。例如,假设您有一个env变量$DATE.
$ DATE=$(date)
$ awk -v date="$DATE" '{print date}' <<< "ignore"
Mon Sep 14 10:27:59 EDT 2015
由于您的示例文件。csv已经具有所有字段,我不确定您要传递给脚本的变量。但是,假设您想要file.csv中的第一个字段,并生成带有日期变量的result.csv,您可以这样做
awk -F";" -v OFS=";" -v date="$DATE" '{print $1, date}' file.csv > result.csv