Как удалить наносекунду из файла

Как я могу удалить наносекунду из каждой строки в файле. данные выглядят как имя файла test.csv

ip,time,name 1.1.1.1,2018-08-17 15:05:52:016469121,1.13.0-0007 1.1.1.2,2018-08-17 15:05:52:016469121,1.13.0-0007 

Пытаться

 sed 's/:[[:digit:]]*,/,/' file ip,time,name 1.1.1.1,2018-08-17 15:05:52,1.13.0-0007 1.1.1.2,2018-08-17 15:05:52,1.13.0-0007 

последняя двоеточие, следующие цифры и последняя запятая заменят только запятой.

 awk -F',' -vOFS=',' '{sub(/:[0-9]{9}$/, "", $2); print}' input.txt 

Выход:

 ip,time,name 1.1.1.1 2018-08-17 15:05:52 1.13.0-0007 1.1.1.2 2018-08-17 15:05:52 1.13.0-0007 

объяснение

  • awk -F',' -vOFS=',' '{foo}' input.txt : использовать awk с разделителем полей (и разделителем выходных полей), запускать команды foo для файла input.txt .
  • sub(/:[0-9]{9}$/, "", $2); : для второго поля $2 замените регулярное выражение :[0-9]{9}$ (то есть девять цифр подряд в конце поля) ничем.
  • print : напечатать новую строку