之所以是强调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
在ubuntu下使用正则表达式提高文本处理效率
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
-
- 帖子: 224
- 注册时间: 2010-05-18 22:23
-
- 帖子: 224
- 注册时间: 2010-05-18 22:23
Re: 在ubuntu下使用正则表达式提高文本处理效率
第二个在VI中删除以//开头的所有注释
%s/\/\/.*//g
%s/\/\/.*//g
- YeLee
- 论坛版主
- 帖子: 26406
- 注册时间: 2008-08-13 8:48
- 系统: Fundu i64
- 来自: 东海硇州,一双管钥。
- 联系:
Re: 在ubuntu下使用正则表达式提高文本处理效率
厉害,学习了。 

◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
-
- 帖子: 224
- 注册时间: 2010-05-18 22:23
Re: 在ubuntu下使用正则表达式提高文本处理效率
第三个
从外面照了很多照片回来,结果从数码相机拷贝到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)}' -`
这样几步下来,数百张照片就没有了,如果手工来完成这个任务这将会是一个艰巨的任务!!
从外面照了很多照片回来,结果从数码相机拷贝到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下使用正则表达式提高文本处理效率
按时间排序,咔嚓。 

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