将来自文件的值放入全局变量(AWK脚本)



我的脚本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

最新更新