请问用Perl来直接替换GAWK使用,可行吗

谢谢:)

TAB被论坛自动转换成空格了,可参考一下后面我传mofile那个文件
实际上还有很多列
这么说来,处理这样的文本,还是用spilt加数组的对吗

参考几段代码,我的想法就是:
split分割
数组定位
处理
最后用原行数据输出再追加 (笨啊,开始没想到直接原行输出,就不存在被split吃掉后面空数据的毛病了-_-#)

担心的是在遇到特殊字符时是否能保持兼容,另split分割后数组跟实际列位置是否能一直保持对应。
我自己再试试吧

多谢多谢


QUOTE:
原帖由 pooronce 于 2008-9-4 10:29 发表
谢谢:)

TAB被论坛自动转换成空格了,可参考一下后面我传mofile那个文件
实际上还有很多列
这么说来,处理这样的文本,还是用spilt加数组的对吗

参考几段代码,我的想法就是:
split分割
数组定位
处 ...

perl的原则There's More Than One Way To Do It.

split比较容易理解,但如果有性能上的要求,用正则会更快。
my ($base, $word) = /(.*?)\t(?:.*?\t){4}(.*?)\t/;
在列数不固定的情况下,正则就就不好用了吧?

除了split和正则,是不是还有其它方式呢
列数不固定的情况下,什么好用?
楼主你先用awk写好
然后用a2p转化一下看看
就是因为相似度awk没有现成解决方案,不方便,才用Perl的啊

但又不想复杂化,提出放进的,想干脆一次性让Perl全部处理了
分割字符窜,可以用unpack,但是你必须知道要分割的位数。


QUOTE:
原帖由 ly5066113 于 2008-9-4 10:09 发表


全是空格,根本分不出哪是F列,还是根据你给的代码稍微改改吧。

#!/usr/bin/perl

use v5.10;

use strict;
use warnings;

#use Smart::Comments;
use Algorithm:iff;

open(F ,"

不好意思,再请教一下:
这个的输出能直接修改原文件吗?
找了一圈相关文档,一头雾水 囧


QUOTE:
原帖由 gawk 于 2008-9-4 13:02 发表
楼主你先用awk写好
然后用a2p转化一下看看

呵呵,这个方法好,但是它生成的代码有些是没有必要的,可以再简化一下