从文件的某一列中删除单词

从文件的某一列中删除单词

我有一个包含以下内容的文件

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

笔记:

  1. 您的文件以逗号分隔。因此,您需要指定-F,,以便在输入时,每行都根据逗号分为多个字段。

  2. 由于您希望输出以逗号分隔的文件,因此我们还需要指定OFS=,

  3. sub(或)的第一个参数gsub应该是正则表达式,而不是字符串。在我们的例子中,正则表达式应该匹配T其后的所有内容。 .*表示其后的所有内容。

  4. 由于 awk 程序员常常以简洁为荣,您可能希望删除print(太冗长)并改用:

    awk -F, '{sub(/T.*/,"",$3)} 1' OFS=, file
    

相关内容