命令行的awk很方便,但处理灵活一点的话对awk不熟,深入学习又没太大必要,用python做个简单的,复杂的话也用python脚本实现,程序的一致性更好。
#!/usr/bin/python
#coding:utf-8
import os
import sys
from getopt import getopt
#处理协程
def deallines(dealer,instream,paras):
sep = paras.get("sep","\t")
for line in instream:
fields = line.strip("\r\n").split(sep)
for result in dealer(line,fields) or ():
if type(result) == str:
yield result
elif type(result) == int:
yield str(result)+"\n"
else:
yield sep.join([str(f) for f in result])+"\n"
#定义处理函数
dealerid = 0
def definedealer(dealstr,paras):
global dealerid
dealerid += 1
funcname = "dealer_"+str(dealerid)
exec "def "+funcname+"(line,f): "+dealstr
return vars()[funcname]