分页: 1 / 1
在ubuntu下使用正则表达式提高文本处理效率
发表于 : 2013-12-01 16:57
由 mobilefzb
之所以是强调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
Re: 在ubuntu下使用正则表达式提高文本处理效率
发表于 : 2013-12-01 17:09
由 mobilefzb
第二个在VI中删除以//开头的所有注释
%s/\/\/.*//g
Re: 在ubuntu下使用正则表达式提高文本处理效率
发表于 : 2013-12-01 17:52
由 YeLee
厉害,学习了。

Re: 在ubuntu下使用正则表达式提高文本处理效率
发表于 : 2013-12-01 18:33
由 mobilefzb
第三个
从外面照了很多照片回来,结果从数码相机拷贝到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)}' -`
这样几步下来,数百张照片就没有了,如果手工来完成这个任务这将会是一个艰巨的任务!!
Re: 在ubuntu下使用正则表达式提高文本处理效率
发表于 : 2013-12-01 22:01
由 oneleaf
按时间排序,咔嚓。

Re: 在ubuntu下使用正则表达式提高文本处理效率
发表于 : 2013-12-01 22:35
由 mobilefzb
oneleaf 写了:按时间排序,咔嚓。

好吧,让我们来扩大上面方法的使用范围:“比如说拷贝文件拷贝错目录了,然后要找到这次拷贝进去的所有文件进行删除,比如说正在进行照片分类,将今天照的照片进行分类的时候突然发现拷贝到错误的分类下了,需要一张张的对,这样就很痛苦,然后采用上面的方法就可以比较快速的完成任务”。
Re: 在ubuntu下使用正则表达式提高文本处理效率
发表于 : 2013-12-04 16:51
由 pisit
mark