免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 1755 | 回复: 18
打印 上一主题 下一主题

极度难题,请大家帮忙出谋划策.文本处理问题. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-06-14 08:12 |只看该作者 |倒序浏览
sample :
一个文件内容如下 :

a:
12345678
b:
56782
c:
12346
如何能变成如下格式:

1:
ac
2:
abc
3:
ac
4:
ac
5:
ab
6:
abc
7:
ab
8:
ab

论坛徽章:
0
2 [报告]
发表于 2003-06-14 09:46 |只看该作者

极度难题,请大家帮忙出谋划策.文本处理问题.

for i in 1 2 3 4 5 6 7 8
do
echo "$i:"
if grep -q $i a
then
   echo -n a
fi
if grep -q $i b
   then echo -n b
fi
if grep -q $i c
   then echo -n c
fi
echo
done

论坛徽章:
0
3 [报告]
发表于 2003-06-14 11:00 |只看该作者

极度难题,请大家帮忙出谋划策.文本处理问题.

把文件格式弄成一下格式
a:12345678
b:56782
c:12346
然后执行以下脚本:
#!/bin/perl
$curLine="";
$outLine="";
$tem="";
$already=0;
open(INPUT,"input"||die("can't open the file IN";
open(OUTPUT,">>output"||die("can't open the file OUT";
for($iCnt=0;$iCnt<=9;$iCnt++){
      $outLine="";$already=0;                          
      open(INPUT,"input"||die("can't open the file IN";
       while($curLine=<INPUT>{
        if($curLine =~ /$iCnt/){
              if(!$already){
                print OUTPUT $iCnt.":"."\n";
                $already=1;
              }
        $tem=substr($curLine,0,1);
        $outLine=$outLine.$tem;
        }
       }
        print OUTPUT $outLine."\n";
}       
close(OUTPUT)||die("can't close the file OUT";
close(INPUT)||die("can't close the file OUT";

论坛徽章:
0
4 [报告]
发表于 2003-06-14 11:24 |只看该作者

极度难题,请大家帮忙出谋划策.文本处理问题.

谢谢anonimousboy ,可是如果我有10万个(abc),那怎么办 ?

论坛徽章:
0
5 [报告]
发表于 2003-06-14 11:31 |只看该作者

极度难题,请大家帮忙出谋划策.文本处理问题.

[quote]原帖由 "rinehart"]谢谢anonimousboy ,可是如果我有10万个(abc),那怎么办 ?[/quote 发表:
     
#!/bin/perl
$curLine="";
$iCnt=0;
$preLine="";
$outLine="";
open(INPUT,"input"||die("can't open the file IN";
open(OUTPUT,">>output"||die("can't open the file OUT";
while($curLine=<INPUT>{
   $iCnt++;
   chomp($curLine);
   if($iCnt==1){  
         $preLine=$curLine;
   }
   if($iCnt==2){
     $outLine=$preLine.$curLine;
         $iCnt=0;
     print OUTPUT $outLine."\n";
   }
   $outLine="";

}
close(OUTPUT)||die("can't close the file OUT";
close(INPUT)||die("can't close the file OUT";
可以先用以上脚本把文件合并成我说的格式,然后,再用我上边的脚本就能输出你想要的文本格式了,数字只能有0-9几中可能啊,所以最多也就输出20行啊,只不过偶数行的内容可能多一些罢了,只要你的文件的内容不足以把你的机器撑破(perl没有长度限制,一个变量的内可以直到没有可分配的空间为止)。

论坛徽章:
0
6 [报告]
发表于 2003-06-14 11:31 |只看该作者

极度难题,请大家帮忙出谋划策.文本处理问题.

原帖由 "kkng09" 发表:
for i in 1 2 3 4 5 6 7 8
do
echo "$i:"
if grep -q $i a
then
   echo -n a
fi
if grep -q $i b
   then echo -n b
fi
if grep -q $i c
   then echo -n c
fi
echo
done
   

如果我abc和12345678都有10万个那么多,能用 “for”指令吗?

论坛徽章:
0
7 [报告]
发表于 2003-06-14 11:36 |只看该作者

极度难题,请大家帮忙出谋划策.文本处理问题.

原帖由 "anonimousboy" 发表:
   
#!/bin/perl
$curLine="";
$iCnt=0;
$preLine="";
$outLine="";
open(INPUT,"input"||die("can't open the file IN";
open(OUTPUT,">>output"||die("can't open the file OUT";
while($curL..........
   

我的意思是我怎么可以将其弄成那样的格式呢?
其实我遇到的实际的情况要比我说出的那个sample更为复杂 . 其实两组数中都含有数字同字母,甚至还有符号 .

论坛徽章:
0
8 [报告]
发表于 2003-06-14 11:40 |只看该作者

极度难题,请大家帮忙出谋划策.文本处理问题.

原帖由 "rinehart" 发表:
   

我的意思是我怎么可以将其弄成那样的格式呢?
其实我遇到的实际的情况要比我说出的那个sample更为复杂 . 其实两组数中都含有数字同字母,甚至还有符号 .
   
那就把你的文件的内容全贴出来啊,大家好能帮你啊,其实两组数种有没有特殊符号都不重要,可以用匹配之匹配数字进行处理就好了~~

论坛徽章:
0
9 [报告]
发表于 2003-06-14 11:45 |只看该作者

极度难题,请大家帮忙出谋划策.文本处理问题.

Z:\sales
         EveryoneOI)(CI)(特殊访问
                          SYNCHRONIZE
                          FILE_EXECUTE

         EveryoneCI)R
         FEDON\RaymondOI)(CI)R
         FEDON\Domain AdminsOI)(CI)F
         FEDON\rinehartOI)(CI)F
Z:\system
          FEDON\Domain AdminsOI)(CI)F
          FEDON\SMD-系統部OI)(CI)C
Z:\data
        EveryoneCI)R
        FEDON\RaymondOI)(CI)R
        FEDON\Domain AdminsOI)(CI)F
        FEDON\rinehart:(OI)(CI)F
Z:\data\PRODUCT
                FEDON\jones:(OI)(CI)R
                <找不到帐户域>(OI)(CI)R
                FEDON\gracie:(OI)(CI)R
                FEDON\fanny:(OI)(CI)R
                FEDON\c03766:(OI)(CI)(特殊访问
                                     READ_CONTROL
                                     WRITE_DAC
                                     WRITE_OWNER
                                     SYNCHRONIZE
                                     FILE_GENERIC_READ
                                     FILE_GENERIC_EXECUTE
                                     FILE_READ_DATA
                                     FILE_READ_EA
                                     FILE_EXECUTE
                                     FILE_DELETE_CHILD
                                     FILE_READ_ATTRIBUTES

                FEDON\a03142:(OI)(CI)R
                FEDON\michelle:(OI)(CI)R
                FEDON\rico:(OI)(CI)R
                FEDON\c03199:(OI)(CI)R
                Everyone:(CI)R
                FEDON\Raymond:(OI)(CI)R
                FEDON\Domain Admins:(OI)(CI)F
                FEDON\rinehart:(OI)(CI)F
....................................................................     
带"z:"的行代表sample中的abc ,其它代表数字行  

论坛徽章:
0
10 [报告]
发表于 2003-06-14 11:53 |只看该作者

极度难题,请大家帮忙出谋划策.文本处理问题.

原帖由 "rinehart" 发表:
   

如果我abc和12345678都有10万个那么多,能用 “for”指令吗?
   
當然可以
for i in 1 2 3 4 5 6 7 8
do
echo "$i:"
for j in a b c
do
if grep -q $i $j
then
echo -n $j
fi
done
echo
done
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP