如何从文件中的每一行中删除纳秒。数据看起来像文件名是测试.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
答案1
尝试
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
它将用逗号替换最后一个冒号、后面的数字和最后一个逗号。
答案2
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
:打印新行