我有一个csv,格式如下
header1,header2,header3
data1, data2, data3
data4, data5, data6
我想添加一个日期列,使csv看起来像这样
header1,header2,header3, date
data1, data2, data3, 01/04/2017
data4, data5, data6, 01/04/2017
我尝试了以下awk命令,但它也在标题行中添加了日期。我是awk的新手,不知道如何工作
mydate=$(date)
awk -v d="$mydate" -F"," 'BEGIN { OFS = "," } {$4=d; print}' input.csv > output.csv
答案 0 :(得分:1)
你在找这样的东西吗?
awk -v date="4/1/17" -F"," 'BEGIN { OFS = "," } NR==1 {print $0 " ,date"} NR>1 {$4=date; print}'
NR指记录的数量。喜欢行号。 这些内置变量可能对您有用:http://www.thegeekstuff.com/2010/01/8-powerful-awk-built-in-variables-fs-ofs-rs-ors-nr-nf-filename-fnr/?ref=binfind.com/web
答案 1 :(得分:1)
使用条件运算符的awk中的另一个:
$ mydate="5/1/2017"
$ awk -v OFS=", " -v d=$mydate '$0 = $0 OFS ( NR==1?"date":d )' file
header1,header2,header3, date
data1, data2, data3, 5/1/2017
data4, data5, data6, 5/1/2017
OFS=", "
,FS
可能会保持默认值,因为它不需要d
var date
或在所有其他记录上打印d
答案 2 :(得分:0)
sed版本是另一种选择
mydate="6/1/2017";sed -e '1 s/$/,date/;b' -e "s/\$/,${mydate}/" YourFile
sed允许内联版本(没有明确的中间文件),选项-i
有时候很有用