[二星]格式化输出,欢迎各种脚本或者语言

除了美化之外,还可以来尝试挑战一下任务
回复
pengqian
帖子: 120
注册时间: 2010-12-23 10:23

Re: ★★格式化输出,欢迎各种脚本或者语言

#61

帖子 pengqian » 2011-01-24 8:32

lilydjwg 写了:
pengqian 写了: 最近在学python, 这个好懂哈~ 原来string 还有 startwith() 这种method 啊
你英文没学好啊,是 startswith()
原来是第三人称单数哈!
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: ★★格式化输出,欢迎各种脚本或者语言

#62

帖子 eexpress » 2011-01-24 9:53

pengqian 写了:
lilydjwg 写了:
pengqian 写了: 最近在学python, 这个好懂哈~ 原来string 还有 startwith() 这种method 啊
你英文没学好啊,是 startswith()
原来是第三人称单数哈!
不是吧。这样bt的函数。没用过正则?
● 鸣学
ylf13
帖子: 1
注册时间: 2013-04-26 14:31
系统: ubuntu10.10

Re: [二星]格式化输出,欢迎各种脚本或者语言

#63

帖子 ylf13 » 2013-05-04 16:10

刚学python,就尝试下~

代码: 全选

  1 #!/usr/bin/python
  2 '''Version2.0
  3 
  4 This is to solve the CONTACT file read'''
  5 filename='CONTACT'
  6 CONTACT=file(filename)
  7 content=CONTACT.read()
  8 CONTACT.close()
  9 print 10*'*',filename,10*'*'
 10 print content
 11 print 10*'*',filename,10*'*'
 12 CONTACTlist=content.split('#CONTACT')
 13 for item in CONTACTlist:
 14         lines=item.split('\n')#split by ENTER
 15         name=''
 16         phone=''
 17         for line in lines:
 18                 if line.startswith('NAME'):
 19                         name=line[5:]
 20                 elif line.startswith('PHONE'):
 21                         phone=line[6:]
 22         #end for
 23         if (name!='')and(phone!=''):
 24                 print 'name:%s , phone:%s' % (name,phone)
 25 #end for
imxf
帖子: 4
注册时间: 2013-03-28 11:42
系统: ubuntu 10.04

Re: [二星]格式化输出,欢迎各种脚本或者语言

#64

帖子 imxf » 2013-06-20 16:09

简洁点的写法如下,通过awk自带的参数就能实现:

代码: 全选

#!/bin/sh
awk -F'=' 'BEGIN{i=0}$1=="#CONTACT"{i++}$1=="NAME"{b[i]=$2}$1=="PHONE"{a[i]=$2}END{for(i in a){if (b[i] && p[i]) printf "%s, %s\n",b[i],a[i]}}' $1

内容多点,但是易懂的方法如下:

代码: 全选

#!/bin/sh
i=0
nm=""
ph=""
touch zc.txt
while read line;do
pdzf=`echo $line|awk -F'=' '{print $1}'`
pdfz=`echo $line|awk -F'=' '{print $2}'`
if [ "$pdzf" = "#CONTACT" ];then
nm=""
ph=""
fi
if [ "$pdzf" = "NAME" ];then
    nm=`printf "%s" $pdfz`
fi
if [ "$pdzf" = "PHONE" ];then
    ph=`printf  ",%s\n" $pdfz`
    i=1
fi
if [ "$pdzf" = "ICON" ];then
if [ $ph ];then
echo ${nm}${ph}>>zc.txt
fi
fi
done <$1
cat zc.txt
rm -rf zc.txt
这两者的实际思想是一样的,楼主其实实现这个功能应该是完全木有问题的,我只是单纯的写出来了。。。 :em11
运行命令为:

代码: 全选

sudo sh 程序文件名 信息文件名
回复