ldap文本处理

将文件中给分割的多行合并成一行

被分割的行特点:首行顶头,次行一空格开头,可以存在N个次行。

eg:

1111111  //顶头写

 222222 //以空格开头

 333333 //以空格开头

实际上在文件中这三行本是一行的:1111111222222333333只是因为过长所以被按上面形式分割开来。
下面是将文件还原到一行的脚本:在对文件进行行处理之前用得上。

#! /usr/bin/perl -w
##by yingying.liu @ 2013.3.28 11:03
###Release 1.0

my $ldapfile = "ldapinfo.txt";  //源文件
my $resfile = "tmpfile.txt";  //目标文件
my $linkline = " ";  //做行链接的
my $preline = " ";  //前一行
my $tmpline = " ";  //临时行
my $flag = 0;

open FILE,"$ldapfile";
open OK,">>$resfile";

foreach my $line (<FILE>){  //line是当前行

//第一种情况:以空格开头并且上一行不是以空格开头
 if(($line =~ /^ (.*)/) && ($tmpline !~ /^ (.*)/)){
  chomp($tmpline);   //去掉上一行行末的换行符
  $linkline = $tmpline.$1; //上一行与本行内容链接
  $tmpline = $linkline;  //备份到临时行
  $flag = 1;
  next;
 }

//第二种情况:如果当前行不是以空格开头并且上一行是连接过的
 elsif(($line !~ /^ (.*)/) && $flag == 1)
 {
  $printline = $linkline."\n";  //上一行加上换行符
  print OK $printline; //输出上一行到文件

  $tmpline = $line;  //当前行保存以备链接用
  $preline = $line; //当前行保存
  $flag = 0;  //置零
  next;
 }
//第三种情况:不以空格开头并且上一行没有经过连接
 elsif(($line !~ /^ (.*)/) && $flag == 0){
  print OK $preline;  //打印上一行
  $preline = $line; //当前行保存
  $tmpline = $line; //当前行保存以备链接
 }

}

print OK $preline;  //打印最后一行.
close (FILE);
close (OK);

system("mv out_ldap.txt out_ldap.txt.org");  //调用system函数执行shell命令
system("mv tmpfile.txt out_ldap.txt");

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值