代码之家  ›  专栏  ›  技术社区  ›  Noctis Skytower

一个无聊的擅离职守的大师能把这个python程序转换一下吗?

  •  2
  • Noctis Skytower  · 技术社区  · 14 年前

    我喜欢蟒蛇,但不太喜欢它。为了进行比较(并了解python到awk master是如何做到这一点的),是否可以有人用awk重写下面的python程序?考虑到它有多短,一些人会认为重写对于任何有一点时间的人来说都是简单和容易的。

    import os
    
    ROOT = '/Users/Zero/Documents/MyProgram.app/Contents/TempFiles'
    ID = '628251 173511 223401 138276 673278 698450 629138 449040 901575'.split()
    
    def main():
        for name in os.listdir(ROOT):
            if '.log' in name.lower():
                path = os.path.join(ROOT, name)
                if os.path.isfile(path):
                    data = open(path, 'rb').read()
                    for line in data.split('\r'):
                        for number in ID:
                            if number in line:
                                print line
                                break
    
    if __name__ == '__main__':
        main()
    
    2 回复  |  直到 14 年前
        1
  •  4
  •   ghostdog74    14 年前
    BEGIN{
       id="628251 173511 223401 138276 673278 698450 629138 449040 901575"
       m=split(id,ID," ")
       for(i=1;i<ARGC;i++){
           while( (getline line<ARGV[i] ) > 0 ){
               n=split(line,LINE," ")
               for ( o=1; o<=n; o++){
                    for(num in ID){
                       if ( num == LINE[o] ){
                         print line
                       }
                    }
               }
           }
       }
    }
    

    另存为 myscript.awk 然后

    #!/bin/bash
    ROOT = "/Users/Zero/Documents/MyProgram.app/Contents/TempFiles"
    cd $ROOT
    awk -f myscript.awk file* #do for files that start with "file"
    

    @奥普,

    对于文本/文件处理,awk不会输给perl、python或任何其他方法。如果您(或这里认为awk已过时的其他人)感兴趣,请转到 http://awk.info . 不,awk在现代环境中仍然有它的用途。别让别人告诉你

        2
  •  6
  •   David Gelhar    14 年前

    为什么AWK?

    对我来说,这看起来像一个简单的grep命令;类似于:

    egrep -w '628251|173511|223401|138276|673278|698450|629138|449040|901575' /Users/Zero/Documents/MyProgram.app/Contents/TempFiles/*.log*
    

    更新:或者使用find+grep,正如某些注释中建议的那样,如果要进行递归搜索