2017-02-17 51 views
0

我有这样的脚本来为第一栏和第二栏AWK命令-drop一列并保存不同的名称日期

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

但我想放弃第二列单独的文件分离后的文件和包括文件名中的日期

这里是输入样本

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

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

column1|column3 
a|1 
a|2 

附加说明 - 我有很多文件要分开,name_1.csv, name_2.csv等 - 不同的文件有不同的列数
谢谢!

回答

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 
+0

我试过你的脚本,但它显示函数strftime没有定义。 – Kiki

+0

@kiki,你的awk版本是什么?我的是'GNU Awk 3.1.7',它工作正常。 –

+0

非常感谢。你有什么想法如何在我上面说的放下专栏? @PS。 – Kiki

0

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

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

column1|column3 
a|1 
a|2 
+0

哦,忘了在我的问题中提到,它实际上是跳过第二列。我有第n列(几乎100),并希望放弃第二列。但是,谢谢! – Kiki