1

我的文件包含以下格式的数据。第三和第四字段是日期。我想只保留这些字段的日期部分并删除时间部分。第二个分数始终是“.0Z”。

输入:

1,2,2012-04-11T00:06:52.0Z,2012-04-11T00:06:52.0Z

输出:

1,2,2012-04-11,2012-04-11

谢谢吉滕德拉

4

6 回答 6

3

你可以这样使用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
于 2013-01-08T02:20:32.503 回答
2

使用

sed 's/T[^,]*//g' input_file

输出:

1,2,2012-04-11,2012-04-11
于 2013-01-08T02:19:56.380 回答
0

如果您的环境可用,一种可能性是使用 perl 来解决此问题。

perl -pe 's/^(\d+),(\d+),(.*)T.*,(.*)T.*/\1,\2,\3,\4/' < yourfile
于 2013-01-08T02:16:15.547 回答
0

由于前两个字段可能包含T,awk应该是比 更好的选择sed

awk -F, '{sub("T.*","",$3); sub("T.*","",$4); print}' OFS=, input_file
于 2013-01-08T03:16:03.020 回答
0
perl -F, -ane '$F[3]=~s/T.*//g;$F[2]=~s/T[^,]*//g;print join ",",@F;' your_file
于 2013-01-08T10:06:48.120 回答
0

我会使用逗号和“T”作为字段分隔符。然后$4$6是时间字段。然后,您可以丢弃不需要的字段

awk -F '[,T]' -v OFS=, '{print $1,$2,$3,$5}' 
于 2013-01-08T15:14:58.127 回答