我有一个包含以下内容的文件
5,test,2019-09-27T11:06:23Z,closed,harshavardhanc,2019-09-27T11:09:28Z,2,2
4,test,2019-09-26T16:56:40Z,closed,harshavardhanc,2019-09-26T16:57:02Z,1,1
3,test,2019-09-26T16:54:25Z,closed,harshavardhanc,2019-09-26T16:54:55Z,1,1
2,test,2019-09-26T16:52:59Z,closed,harshavardhanc,2019-09-26T16:55:19Z,1,1
1,test,2019-09-26T16:46:52Z,closed,harshavardhanc,2019-09-26T16:47:25Z,1,1
我想修剪第三列2019-09-27T11:06:23Z
,基本上2019-09-27
我想删除时间并只保留日期。
4,test,2019-09-26,closed,harshavardhanc,2019-09-26T16:57:02Z,1,1
3,test,2019-09-26,closed,harshavardhanc,2019-09-26T16:54:55Z,1,1
2,test,2019-09-26,closed,harshavardhanc,2019-09-26T16:55:19Z,1,1
1,test,2019-09-26,closed,harshavardhanc,2019-09-26T16:47:25Z,1,1
我尝试使用 awk 和 gsub
awk '{gsub("T","",$3);print}' test
但没有运气,请帮我如何实现这一目标。
答案1
尝试:
$ awk -F, '{sub(/T.*/,"",$3);print}' OFS=, file
5,test,2019-09-27,closed,harshavardhanc,2019-09-27T11:09:28Z,2,2
4,test,2019-09-26,closed,harshavardhanc,2019-09-26T16:57:02Z,1,1
3,test,2019-09-26,closed,harshavardhanc,2019-09-26T16:54:55Z,1,1
2,test,2019-09-26,closed,harshavardhanc,2019-09-26T16:55:19Z,1,1
1,test,2019-09-26,closed,harshavardhanc,2019-09-26T16:47:25Z,1,1
笔记:
您的文件以逗号分隔。因此,您需要指定
-F,
,以便在输入时,每行都根据逗号分为多个字段。由于您希望输出以逗号分隔的文件,因此我们还需要指定
OFS=,
。sub
(或)的第一个参数gsub
应该是正则表达式,而不是字符串。在我们的例子中,正则表达式应该匹配T
其后的所有内容。.*
表示其后的所有内容。由于 awk 程序员常常以简洁为荣,您可能希望删除
print
(太冗长)并改用:awk -F, '{sub(/T.*/,"",$3)} 1' OFS=, file