我的文件包含以下格式的数据。第三和第四字段是日期。我想只保留这些字段的日期部分并删除时间部分。第二个分数始终是“.0Z”。
输入:
1,2,2012-04-11T00:06:52.0Z,2012-04-11T00:06:52.0Z
输出:
1,2,2012-04-11,2012-04-11
谢谢吉滕德拉
你可以这样使用sed
:
sed 's/T[^,]*//g' file
或与awk
:
awk '{ gsub(/T[^,]*/,"") }1' file
或者如果前两个字段可能包含字母“T”:
sed 's/\([^,]*,[^,]*,[^T]*\)[^,]*\([^T]*\).*/\1\2/' file
或与awk
:
awk -F, '{ sub(/T.*/,"",$3); sub(/T.*/,"",$4) }1' OFS=, file.txt
结果:
1,2,2012-04-11,2012-04-11
如果您的环境可用,一种可能性是使用 perl 来解决此问题。
perl -pe 's/^(\d+),(\d+),(.*)T.*,(.*)T.*/\1,\2,\3,\4/' < yourfile
由于前两个字段可能包含T
,awk
应该是比 更好的选择sed
:
awk -F, '{sub("T.*","",$3); sub("T.*","",$4); print}' OFS=, input_file
perl -F, -ane '$F[3]=~s/T.*//g;$F[2]=~s/T[^,]*//g;print join ",",@F;' your_file
我会使用逗号和“T”作为字段分隔符。然后$4
和$6
是时间字段。然后,您可以丢弃不需要的字段
awk -F '[,T]' -v OFS=, '{print $1,$2,$3,$5}'