我的文件包含以下格式的数据。第三和第四个字段是日期。我想保留这些字段的日期部分并删除时间部分。第二部分总是“.0Z”。
输入:
1,2,2012-04-11T00:06:52.0Z,2012-04-11T00:06:52.0Z
输出:
1,2,2012-04-11,2012-04-11
由于 Jitendra
答案 0 :(得分: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
答案 1 :(得分:2)
答案 2 :(得分:0)
如果在您的环境中可以使用perl,则可以使用perl来解决此问题。
perl -pe 's/^(\d+),(\d+),(.*)T.*,(.*)T.*/\1,\2,\3,\4/' < yourfile
答案 3 :(得分:0)
由于前两个字段可能包含T
,awk
应该是比sed
更好的选择:
awk -F, '{sub("T.*","",$3); sub("T.*","",$4); print}' OFS=, input_file
答案 4 :(得分:0)
perl -F, -ane '$F[3]=~s/T.*//g;$F[2]=~s/T[^,]*//g;print join ",",@F;' your_file
答案 5 :(得分:0)
我会使用逗号和“T”作为字段分隔符。然后,$4
和$6
是时间字段。然后,您可以丢弃不想要的字段
awk -F '[,T]' -v OFS=, '{print $1,$2,$3,$5}'