python与awk

来源:互联网 发布:java switch参数 编辑:程序博客网 时间:2024/06/05 17:46
今天时老师让我们把学生上传在ftp服务器上的作业验收一下,看一下谁没交。登录服务器一看发现,这么多文档,如果一个一个对着学号找,是多么费时间的一件事,于是就琢磨着写个脚本把所有的学号从服务器段扒下来,然后将学号排个序,这样就节省不少时间。
可是,之前看过的python知识点都忘却了不少,于是在网上找了个代码

代码如下
//test.py//function: 从服务器端将目录下的文件信息全部读入本地文件from ftplib import FTPf=FTP('ftp.xxx.cn')f.login('id','passwd')f_handle=open("txt","wb").writef.retrbinary('LIST',f_handle)f.quit()

也就这简单的6行代码,文件信息存于txt文件中(脚本语言实现起来比C/C++/Java要简单多了)

将txt文件中的信息适当修改,就是把两个学号之间的“-”或是“&”换成".",来作为统一的分割符

awk '{print $9}' > tmp  //该命令把txt文件的第九列(学生上传的文件名)存入tmp文件中

awk 'BEGIN {FS="."} {i=1;while(i<=NF){if($i ~ /[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/)print $i;} i++}'  tmp  | sort > result.txt

上面的一条命令是把tmp文件的信息取出学号并进行排序,排序后的信息存与result.txt文件中

打开result.txt文件,就可以很快的找到哪个学生没交了。顺序查看毕竟比在一堆杂乱的信息中找轻松很多


上面的过程感觉还是有点繁琐,我的目标是写一个python脚本,执行该脚本就能吧最后的排好序的信息存在result.txt中,可是python不是很熟,所以要好好补补

另外,最后一条awk命令中的匹配判断if($i ~ /[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/) 我写成if($i ~ /[0-9]{8})却不行,目前还没弄明白是怎么回事。

 

最后以及总之,脚本语言很方便,很好使。

原创粉丝点击