Pytohn实现Linux shell中的wc命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pytohn实现Linux shell中的wc命令相关的知识,希望对你有一定的参考价值。

#!/usr/bin/python

import sys
import os
from optparse import OptionParser
  
def opt():
    parser = OptionParser()
    parser.add_option("-c", "--char",
                      dest="chars",
                      action="store_true",
                      default=False,
                      help="only count chars")
    parser.add_option("-w", "--work",
                      dest="words",
                      action="store_true",
                      default=False,
                      help="only count words")
    parser.add_option("-l", "--line",
                      dest="lines",
                      action="store_true",
                      default=False,
                      help="only count lines")
    parser.add_option("-n", "--no-total",
                      dest="total",
                      action="store_true",
                      default=False,
                      help="only count total")
    options, args = parser.parse_args()
    return options, args
  
def get_count(data):
    chars = len(data)
    words = len(data.split())
    lines = data.count(‘\n‘)
    return lines, words, chars
  
def print_wc(options, lines, words, chars, fn):
    if options.lines:
       print lines,
    if options.words:
       print words,
    if options.chars:
       print chars,
    print fn
  
def main():
    options, args = opt()
    if not (options.lines or options.words or options.chars):
        options.lines, options.words, options.chars = True, True, True
    if args:
        file = 0
        total_lines, total_words, total_chars = 0, 0, 0
        for fn in args:
            if os.path.isfile(fn):
                with open(fn) as fd:
                     data = fd.read()
                lines, words, chars = get_count(data)
                print_wc(options, lines, words, chars, fn)
                total_lines += lines
                total_words += words
                total_chars += chars
                file += 1
            elif os.path.isdir(fn):
                print >> sys.stderr, "%s: is a directory" % fn
            else:
                sys.stderr.write("%s: No such file or direcotry\n" % fn)
        if file > 1 and  not options.total:   
            print_wc(options, total_lines, total_words, total_chars, "total")
    else:
        data = sys.stdin.read()
        fn = ‘‘    
        lines, words, chars = get_count(data)
        print_wc(options, lines, words, chars, fn)
  
if __name__ == ‘__main__‘:
    main()


[[email protected] ~]# python wc100.py -wcl 1.txt data.sql nginx.sh //具体用法 -w 统计 单词数 -c 统计字数 -l统计行数 -n取消总统计量


技术分享


[[email protected] ~]# wc -wcl 1.txt data.sql nginx.sh

技术分享

以上是关于Pytohn实现Linux shell中的wc命令的主要内容,如果未能解决你的问题,请参考以下文章

shell中的特殊符号和cut,sort,wc,uniq,tee,tr,split命令

Linux CentOS 7 shell中的特殊字符及与管道相关的命令(cut,sort,wc,uniq,tee,tr,split)

利用linux 中的shell script做 #!/bin/bash a=`ls $1 grep -h access.log.0905` b=`wc -l $a`

Linux centos7 shell特殊符号cut命令sort_wc_uniq命令tee_tr_split命令shell特殊符号

linux 的常用小技巧

Linux系统 shell基础