linux 文本内容替换(awk/sed)
麻烦高手们指导,提供替换的脚本和解释,谢谢!1)原始文本内容如下,数据间逗号为分隔符,但存在问题是日期格式有问题,需要调整正确:(源文件的记录数10W条左右)201407...
麻烦高手们指导,提供替换的脚本和解释,谢谢!
1)原始文本内容如下,数据间逗号为分隔符,但存在问题是日期格式有问题,需要调整正确:(源文件的记录数10W条左右)
20140729,05163245,10888,003051,2014-07-29-22.54.58.255521,00
20140729,05161734,10725,051504,2014-07-29-22.54.59.762993,00
2)目的:希望将第5列的字段进行替换,每行数据的时间都是不一样的。
“2014-07-29-22.54.58.255521”由于输出有误,需要将数据调整为正确的日期格式,如:
“2014-07-29 22:54:58” 展开
1)原始文本内容如下,数据间逗号为分隔符,但存在问题是日期格式有问题,需要调整正确:(源文件的记录数10W条左右)
20140729,05163245,10888,003051,2014-07-29-22.54.58.255521,00
20140729,05161734,10725,051504,2014-07-29-22.54.59.762993,00
2)目的:希望将第5列的字段进行替换,每行数据的时间都是不一样的。
“2014-07-29-22.54.58.255521”由于输出有误,需要将数据调整为正确的日期格式,如:
“2014-07-29 22:54:58” 展开
展开全部
#!/usr/bin/perl
use strict;
use warnings;
my $log_path="./aoyou.txt"; #修改你的日志路径
open LOG,"$log_path" or die "Can not open log file: $!";
foreach (<LOG>) {
if ($_ =~ m!(.*\,.*\,.*\,.*)\,(\d+\-\d+\-\d+)\-(\d+\.\d+\.\d+)\.\d+,(.*)!) {
print "$1,$2 $3,$4 \n";
}
}
close LOG
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
假设你的文件叫做filename,敲
sed 's/\([0-9]\{4\}-[0-9][0-9]-[0-9][0-9]\)-\([0-9][0-9]\).\([0-9][0-9]\).\([0-9][0-9]\).\([0-9]\{6\}\)/\1 \2:\3:\4/g' filename > output
新的结果就会存在outpu文件里了
20140729,05163245,10888,003051,2014-07-29 22:54:58,00
20140729,05161734,10725,051504,2014-07-29 22:54:59,00
这是用你的数据得到的样板答案
追问
您好,按照您的方法执行,能解决大部分的问题了,但输出结果如下“2014-07-29 22:54:58.255521”,秒后加上小数点还有7位需要截掉,能帮忙补充完成吗,谢谢!
追答
不知道你为什么会有那样的问题哎,我测试的时候明明好好的,已经把尾巴截掉了
那你再试试这个吧
sed 's/\([0-9]\{4\}-[0-9][0-9]-[0-9][0-9]\)-\([0-9][0-9]\).\([0-9][0-9]\).\([0-9][0-9]\).\([0-9]*\)/\1 \2:\3:\4/g' filename > output
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
[root@localhost shell]# gawk -f script file1.txt
20140729,05163245,10888,003051,2014-07-29-22.54.58,00
20140729,05161734,10725,051504,2014-07-29-22.54.59,00
file1.txt里存得是你给的数据,script里内容如下:
[root@localhost shell]# cat script
BEGIN {
FS="."
}
{
print $1 "." $2 "." $3 ",00"
}
20140729,05163245,10888,003051,2014-07-29-22.54.58,00
20140729,05161734,10725,051504,2014-07-29-22.54.59,00
file1.txt里存得是你给的数据,script里内容如下:
[root@localhost shell]# cat script
BEGIN {
FS="."
}
{
print $1 "." $2 "." $3 ",00"
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询