时间:2021-05-22
写了一个比较粗糙的C语言代码行数统计脚本,目前还有些bug,而且效率也不高。脚本主要就是去除大部分的注释后统计行数,相当于做了一部分预处理的工作。下面是代码:
#!/bin/bash filename=$1echo "`whoami`"if [ $# -lt 1 ];then echo "usage : ./scripts filename" exit -1fiif [ ! -f $filename ];then echo "$filename is not a file" exit 0;fi user="`whoami`"if [ "$user" != "root" ];then echo "use scripts with root" exit 0;fi#删除空行,空行包括:tables + spacesed '/^[[:blank:]]*$/d' $filename > "${filename}_backup"#删除 // 所在的行sed -i '/^[[:blank:]]*\/\//d' "${filename}_backup"##打印[*]' "${filename}_backup" | awk 'BEGIN{FS=":"}{print $1}' > "start.txt"#打印*/所有的结束行grep -n '[*]/[[:blank:]]*' "${filename}_backup" | awk 'BEGIN{FS=":"}{print $1}' > "end.txt"#合并两个文件,final.txt里面每行就是这种类型注释的开始行和起始行号paste "start.txt" "end.txt" > "final.txt"while read linedo #得到起始行 START=`echo "$line" | awk 'BEGIN{FS="\t"}{print $1}'` #得到结束行 END=`echo "$line" | awk 'BEGIN{FS="\t"}{print $2}'` #这里有一个bug,如是中的在同一行出现,并且有代码也在同一行 # printf("hello world\n"); # #上面两种情况的就没法判断,希望大家优化 if [ $START -eq $END ];then continue fi #删除中间所有行 sed -i "${START},${END}d" "${filename}_backup"done < "final.txt"wc -l "${filename}_backup"rm -f "final.txt" "start.txt" "end.txt"脚本只能实现大概的代码行数的统计,不能做到精确统计!
因为没有做很多的测试,而且也不排除有些比较少见的注释我没考虑到,另外脚本的效率也比较差,用了很多tmp文件。
所以希望大家多提提意见!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
每一个合格的Linux运维人员都应该做到熟练或精通Shell脚本编程,因为Shell脚本语言差不多是所有编程语言里最简单的语言,如果Shell脚本不行,意味着运
用shell写的递归遍历目录的脚本,脚本实现递归遍历指定目录,打印目录下的文件名。实例1:复制代码代码如下:#!/bin/shfunctionscandir()
备份数据库的shell脚本一复制代码代码如下:#!/bin/bash#指定运行的脚本shell#运行脚本要给用户执行权限bakdir=/backupmonth=
本文实例为大家分享了C语言+shell实现linux网卡状态检测的具体代码,供大家参考,具体内容如下不解释,直接上代码要求linux环境具备grep和awk(a
C语言+shell实现linux网卡状态检测和C语言实现linux网卡连接检测2文的方法各有缺陷,比如有些系统执行ifconfig需要root权限,要不就不支持