У меня есть файл, который содержит что-то вроде ниже
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
Я хочу обрезать 3-й столбец 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
Но не повезло, пожалуйста, помогите, как мне этого добиться.
Попытка:
$ 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