[英]format date column in csv with bash script
I have multiple comma separated files in a folder. 我在一个文件夹中有多个逗号分隔的文件。 Each CSV file looks like following:
每个CSV文件如下所示:
"Column1","Date","Column2"
"fdfsd","20151023","rwer"
"fsdsf","20151023","jjfg"
.
.
I need to modify the 2nd Date column to display the date in this format "10/14/2015" or "2015-10-14". 我需要修改“第二个日期”列,以使用“ 10/14/2015”或“ 2015-10-14”格式显示日期。
Please can someone help me with this? 请有人可以帮我吗?
Thanks 谢谢
This is what i have tried: 这是我尝试过的:
cat test.csv | while read line ; do echo $line\;$(date -d "%Y%m%d" "+ YYYY/MM/DD") ; done
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... [-f fmt date | 用法:日期[-jnu] [-d dst] [-r秒] [-t西] [-v [+ |-] val [ymwdHMS]] ... [-f fmt日期| [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format] "Column1","Date","Column2";
[[[mm] dd] HH] MM [[cc] yy] [。ss]] [+ format]“ Column1”,“ Date”,“ Column2”;
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... [-f fmt date | 用法:日期[-jnu] [-d dst] [-r秒] [-t西] [-v [+ |-] val [ymwdHMS]] ... [-f fmt日期| [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format] "fdfsd","20151023","rwer";
[[[mm] dd] HH] MM [[cc] yy] [。ss]] [+ format]“ fdfsd”,“ 20151023”,“ rwer”;
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... [-f fmt date | 用法:日期[-jnu] [-d dst] [-r秒] [-t西] [-v [+ |-] val [ymwdHMS]] ... [-f fmt日期| [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format] "fsdsf","20151023","jjfg";
[[[mm] dd] HH] MM [[cc] yy] [。ss]] [+ format]“ fsdsf”,“ 20151023”,“ jjfg”;
由于您只需要在日期中插入连字符,因此这是一个字符串操作问题,而不是日期操作问题:
sed -i.bak -re 's/([0-9]{4})([0-9]{2})([0-9]{2})/\1-\2-\3/' *.csv
You can use this awk
to reformat a given date
string: 您可以使用以下
awk
重新格式化给定的date
字符串:
awk 'BEGIN{FS=OFS=","} NR>1{cmd = "date -d \"" $2 "\" \"+%Y-%m-%d\"";
cmd | getline out; $2=out; close("uuidgen")} 1' file
"Column1","Date","Column2"
"fdfsd",2015-10-23,"rwer"
"fsdsf",2015-10-14,"jjfg"
Python has a very robust csv module. Python有一个非常强大的csv模块。
You can do: 你可以做:
$ python -c '
import csv
import datetime
import fileinput
def line_out(line):
print ",".join(["\"{}\"".format(e) for e in line])
csv_data=csv.reader(fileinput.input())
line_out(next(csv_data))
for line in csv_data:
line[1]=datetime.datetime.strptime(line[1], "%Y%m%d").date().isoformat()
line_out(line)' file
Prints: 打印:
"Column1","Date","Column2"
"fdfsd","2015-10-23","rwer"
"fsdsf","2015-10-23","jjfg"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.