使用shell 脚本递归删除项目中的所有源文件的行注释
来源:互联网 发布:网络悲伤情歌 编辑:程序博客网 时间:2024/06/03 18:26
因为最后一次Java实验,老师要求在代码行后不要留注释,可以在一些代码段前使用注释。但是因为在这之前我已经写完了,而且加了比较多的注释,如果一个一个删除的话太麻烦,正好这学期学了linux shell,所以我想到使用shell脚本把项目下所有源文件代码行后的注释删掉。虽然是在Windows环境下,但是因为之前为了管理代码下载了Git Bash,所以可以在Git Bash 中使用linux命令。(可以在 http://gitforwindows.org/ 下载GitBash)
因为linux 命令对文件的操作非常方便,所以,我先使用ls -R 命令,递归的列出当前文件夹下所有的文件。因为在显示的结果中,会先在一行显示路径(如下图所示),之后再在下面显示该路径下的文件。然后将路径的名称保存在一个临时文件中。
最后,使用sed 。一开始,我在脚本中是用的`sed -i -r 's/(.*)\/\/.*/\1/ $pathname/*.java'`,但是运行后却把分号与注释之间包括注释符删除掉了。所以我把步骤分为两步,首先把注释符替换为换行回车和分号,再把以分号开头的行删掉。脚本内容如下:
#! /bin/bash`ls -R > tmpfile`if [ -f "newtmpfile" ]then `rm newtmpfile`fi`touch newtmpfile`while read linedo#echo "content: "$linereg=":$"#pathif [[ "$line" =~ $reg ]]#mind spacethen#echo "find: "$line`echo $line >> newtmpfile``sed -i 's/://' newtmpfile`#`sed -i '/^\.$/d' newtmpfile`fidone < tmpfilecurr_path=`pwd`while read pathnamedo#echo 'cd path' $pathname#`cd $pathname`#go into path#`sed -i -r 's/(.*)\/\/.*/\1/ $pathname/*.java'``sed -i -r 's|//|\r\n;|' $pathname/*.java``sed -i -r '/^;/d' $pathname/*.java``cd $curr_path`done < newtmpfile
再执行之前,可以先用使用git init创建一个仓库,git add . 添加所有的文件,git commit -m ' ' 提交(引号中的是此次提交的注释)。可以使用git log 查看提交记录。在上面的脚本执行后,可以把操作后的提交,也可以使用git reset --hard HEAD将文件返回为之前提交的状态。其中HEAD可以替换为提交记录中对应的那一串字符:参考:
Shell if中的正则表达式使用详解 www.bkjia.com/jcjc/1104433.html
Sed replace path with slash separators http://netjunky.net/sed-replace-path-with-slash-separators/
阅读全文
0 0
- 使用shell 脚本递归删除项目中的所有源文件的行注释
- 删除Java源文件中全部注释的Python脚本
- 删除c++源文件的注释
- shell 脚本中的递归
- 源程序-删除c源文件中的注释
- Linux下使用Shell脚本删除一个目录下的所有子目录和文件
- 递归解压当前目录以及子目录下的所有压缩文件,并删除源文件
- 递归解压当前目录以及子目录下的所有压缩文件,并删除源文件
- [构思]依据verilog源文件中的关键代码及其注释,使用脚本命令生成代码文档
- 使用shell脚本统计源码文件中的注释行数.(// , /**/)
- 删除mysql数据库中所有表的shell脚本
- Shell脚本递归删除空文件夹
- shell脚本的注释方法
- 删除文件中的空行和注释行 linux shell
- shell 脚本多行注释
- Shell脚本多行注释
- 删除c语言中的所有注释语句
- 删除Java代码中的所有注释
- SDUT 2017 Autumn Single Contest O 周六场个人赛
- Java面向对象的五大原则
- 求a,b最大公约数的最快算法
- ViewPager
- Redis
- 使用shell 脚本递归删除项目中的所有源文件的行注释
- Dev ButtonEdit控件
- ubuntu配置nginx和php5.6
- Heroku+Wordpress
- eclipse修改复制web项目部署名字
- 智能蛇的学习心得
- utils/pkg_list_update.py
- 4、SpringMVC参数绑定
- 蓝桥杯-第七届蓝桥杯决赛第一题