AWK命令 - 指向一列并使用不同的名称保存日期

时间:2017-02-17 06:11:22

标签: awk

我有这个脚本来分隔第一列和第二列的文件

COMMIT TRAN;

但我希望在分离文件后删除第二列,并在文件名中包含日期

这是输入样本

awk -F\| 'NR>1 {print > "SEPARATE_COLUMN_"$1"_"$2".csv"}' name_1.csv 

我想要的输出是新文件名SEPARATE_COLUMN_a_b_todaydate.csv

column1|column2|column3
a|b|1
a|b|2
a|d|2

额外注释 - 我有许多要分开的文件,name_1.csv,name_2.csv等等 - 不同的文件具有不同的列数
谢谢!

2 个答案:

答案 0 :(得分:0)

awk -F\| 'NR>1 {print > "SEPARATE_COLUMN_"$1"_"$2"_"strftime("%d-%m-%y" ,systime())".csv"}' name_1.csv

这使用了awk内置的strftime功能。 %d-%m-%y是从systime()转换的时间格式,它返回纪元时间。

或者您可以使用:这将使用bash计算当前日期并将其存储到变量中供以后使用。

awk -v date="$(date +"%Y-%m-%d ")"  -F\| 'NR>1 {print > "SEPARATE_COLUMN_"$1"_"$2"_"date".csv"}'  name_1.csv

答案 1 :(得分:0)

也许你可以用它来详细说明。

awk -F\| 'NR<4{print $1,$3}' OFS=\| file

column1|column3
a|1
a|2