小编Sun*_*ren的帖子

从40900000分割到409-00-000

有没有人知道用单个命令,sed或awk将"40900000"转换为"409-00-000"的方法.我已经尝试了几种方式与sed但没有运气.我需要批量执行此操作,大约有40k行,其中一些行不正确,因此需要修复它们.

提前致谢

bash awk sed

2
推荐指数
1
解决办法
106
查看次数

在5分钟内处理150万行文件

经过网上长时间的搜索,我决定在这里询问我的问题.我有一个CSV文件集(总共36个文件),每5分钟一次.每个文件包含大约150万行.我需要在5分钟内处理这些文件.我必须解析这些文件并在存储区域内从它们创建所需的目录.然后将每个唯一行转换为文件并放入相关目录中.相关行也会写在相关文件中.如您所见,有许多I/O操作.

我可以完成12个文件大约10分钟.目标是在5分钟内完成36.我正在使用PERL来完成此操作.我看到的问题是系统调用i/o操作.

我想在Perl中控制文件处理程序和I/O缓冲区,这样我就不必每次都去写文件了.这是我迷路的地方.加上创建目录似乎也消耗了太多时间.

我搜索CPAN,网络找到一些可以点亮我的路线但没有运气的线索.有人在这个问题上有建议吗?我应该在哪里阅读或如何进行?我相信Perl能够解决这个问题,但我想我没有使用正确的工具.

open(my $data,"<", $file);
my @lines = <$data>;

foreach (@lines) {
    chomp $_;
    my $line = $_;

    my @each = split(' ',$line);
    if (@each == 10) {
       my @logt = split('/',$each[3]);
       my $llg=1;

       if ($logt[1] == "200") {
           $llg = 9;
       }

       my $urln = new URI::URL $each[6];
       my $netl = $urln->netloc;

       my $flnm = md5_hex($netl);
       my $urlm = md5_hex($each[6]);

       if ( ! -d $outp."/".$flnm ) {
          mkdir $outp."/".$flnm,0644;
       }

       open(my $csvf,">>".$outp."/".$flnm."/".$time."_".$urlm) or die $!;
       print $csvf …
Run Code Online (Sandbox Code Playgroud)

csv io perl file

1
推荐指数
1
解决办法
518
查看次数

标签 统计

awk ×1

bash ×1

csv ×1

file ×1

io ×1

perl ×1

sed ×1