Linux 版 (精华区)

发信人: netiscpu (平淡是真), 信区: Linux
标  题: 一个处理ls-lR文件的小awk程序
发信站: 紫 丁 香 (Mon Dec 14 14:35:26 1998), 转信


发信人: scaner (P.o.t.S), 信区: Linux
标  题: 一个处理ls-lR文件的小awk程序
发信站: BBS 水木清华站 (Sat Nov 28 22:11:53 1998)

用grep搜索大型的ftp的ls-lR文件时,发现找到文件
的绝对路径是件很麻烦的事,就写了个awk小程序,输入
是ls-lR文件,输出是带绝对路径的文件列表.

--- ls-lR.awk ---
BEGIN{
        showdate=showname=showsize=0;
        if(match(opt,"d")!=0)
                showdate=1
        if(match(opt,"n")!=0)
                showname=1
        if(match(opt,"s")!=0)
                showsize=1
        paths="/"
}

/.*:$/{
        oldfs=FS
        oldofs=OFS
        FS=":"
        paths=$1;
        gsub(":","/",paths);
        paths=sprintf("/%s",paths)
        FS=oldfs}

/^[dl-]/{    
        if(showname)
                printf("%s",domain);
        printf("%s%s ",paths,$9);
        if(showsize)
                printf(": %s ",$5);
        if(showdate)
                printf(": %s %s %s",$6,$7,$8);
        printf("\n");
}
--- End ---

现在还有个小问题就是根在路径后的":"我不会去,
只好用傻傻的gsub了.

用法很简单
awk -f ls-lR.awk -v opt=opts -v domain=domain_name ls-lR.file
opts可以是以下几个字符组成的字符串:
        d:显示文件时间
        n:显示绝对路径前加上domain_name
        s:显示文件大小

--
#telnet I.want.to.go
telnet: Unable to connect to remote host: No Route to host

m5m※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: dial2.nuaa.edu.]

--

                              Enjoy Linux!
                          -----It's FREE!-----

※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: mtlab.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.702毫秒