Tente
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
substituirá os últimos dois pontos, os dígitos seguintes e a vírgula final com apenas a vírgula.
Como posso remover nanossegundos de todas as linhas de um arquivo? dados parece filename é 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
awk -F',' -vOFS=',' '{sub(/:[0-9]{9}$/, "", $2); print}' input.txt
Saída:
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
: use awk
com o separador de campos (e o separador do campo de saída) ,
, executando comandos foo
, no arquivo input.txt
. sub(/:[0-9]{9}$/, "", $2);
: para o segundo campo $2
, substitua a expressão regular :[0-9]{9}$
(ou seja, nove dígitos seguidos no final do campo) por nada. print
: imprima a nova linha Tags text-processing