在ubuntu下使用正则表达式提高文本处理效率

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
mobilefzb
帖子: 224
注册时间: 2010-05-18 22:23

在ubuntu下使用正则表达式提高文本处理效率

#1

帖子 mobilefzb » 2013-12-01 16:57

之所以是强调ubuntu是因为这些正则表达式都只在ubuntu下做过测试可行(同样的命令格式放到cygwin里面也许就会报错)。
当然,这里所记录的命令对于其它的发行版来说应该是通用的。
本来想以脚本的形式发布,但是有些时候感到脚本还是不能处理所有的问题,所以就把操作步骤发上来,其它熟悉脚本的朋友继续优化。
第一个删除c\c++文件中以/*..*/为特征的注释内容
第一步(命令行下):awk '$0~/\/(\*)+/,/.*(\*)+\// {print $0}' single_list_test2.c > nneed.txt
第二步(命令行下):diff single_list_test2.c nneed.txt | sed -e 's/<//g' - > res.c
第三步(使用vi打开res.c):%s/^<//g
第四步(在vi打开的res.c中):%s/^[0-9].*[0-9]$//g
mobilefzb
帖子: 224
注册时间: 2010-05-18 22:23

Re: 在ubuntu下使用正则表达式提高文本处理效率

#2

帖子 mobilefzb » 2013-12-01 17:09

第二个在VI中删除以//开头的所有注释
%s/\/\/.*//g
头像
YeLee
论坛版主
帖子: 26406
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
联系:

Re: 在ubuntu下使用正则表达式提高文本处理效率

#3

帖子 YeLee » 2013-12-01 17:52

厉害,学习了。 :em11
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
mobilefzb
帖子: 224
注册时间: 2010-05-18 22:23

Re: 在ubuntu下使用正则表达式提高文本处理效率

#4

帖子 mobilefzb » 2013-12-01 18:33

第三个
从外面照了很多照片回来,结果从数码相机拷贝到PC的时候,发现数码相机的照片的文件名和PC上的照片重名了。虽然停止了拷贝,但是部分数码相机的照片已经拷贝到PC中了,现在要找出这部分照片,然后删除。下面就介绍一下一种比较快的完成这个任务的方法
1.获取相机中的文件名列表,然后找到本地目录中相同文件名的文件计算出MD5值
md5sum `ls -l ./相机/ | awk '{printf("%s ",$9)}' -` > res_1.txt
2.计算出数码相机中每张照片的MD5值
md5sum `ls -l ./相机/ | awk '{printf("./相机/%s ",$9)}' -` > res_2.txt
3.将第二步中生成的文本中的“./相机/”两个字去掉(这样res_1.txt和res_2.txt的格式就相同了)
sed -e 's/\.\/相机\///g' res_2.txt > res_3.txt
4.对两个结果文件进行比较,将比较结果输出到res_5.txt(这里得到的是不同文件列表,我们最后需要利用这个列表求出相同的文件列表,然后将那部分删除掉)
diff -y --suppress-common-lines res_1.txt res_3.txt | awk '{print $2}' - > res_4.txt
5.重新得到相机中的所有文件的列表
ls -l ./相机/ | awk '{print $9}' - > res_5.txt
6.再次比较列表获取相同的文件列表并进行删除
rm -rf `diff res_4.txt res_5.txt | awk '{printf("./%s ",$2)}' -`
这样几步下来,数百张照片就没有了,如果手工来完成这个任务这将会是一个艰巨的任务!!
头像
oneleaf
论坛管理员
帖子: 10454
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

Re: 在ubuntu下使用正则表达式提高文本处理效率

#5

帖子 oneleaf » 2013-12-01 22:01

按时间排序,咔嚓。 :em01
mobilefzb
帖子: 224
注册时间: 2010-05-18 22:23

Re: 在ubuntu下使用正则表达式提高文本处理效率

#6

帖子 mobilefzb » 2013-12-01 22:35

oneleaf 写了:按时间排序,咔嚓。 :em01
好吧,让我们来扩大上面方法的使用范围:“比如说拷贝文件拷贝错目录了,然后要找到这次拷贝进去的所有文件进行删除,比如说正在进行照片分类,将今天照的照片进行分类的时候突然发现拷贝到错误的分类下了,需要一张张的对,这样就很痛苦,然后采用上面的方法就可以比较快速的完成任务”。
头像
pisit
帖子: 413
注册时间: 2008-07-08 10:39

Re: 在ubuntu下使用正则表达式提高文本处理效率

#7

帖子 pisit » 2013-12-04 16:51

mark
回复