Chinaunix首页 | 论坛 | 博客
  • 博客访问: 374897
  • 博文数量: 53
  • 博客积分: 1411
  • 博客等级: 上尉
  • 技术积分: 701
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 14:40
文章分类

全部博文(53)

文章存档

2011年(6)

2010年(20)

2009年(18)

2008年(9)

我的朋友

分类: LINUX

2011-09-02 19:05:24

脚本:do.replace
作用:针对大量文件中出现的某个字符串进行替换。
说明:执行该脚本会遍历当前目录,对c或h文件中的匹配字符串进行批量的替换。脚本首先会递归当前路径,find出以.[hc]结尾的文件,然后对这些文件进行grep操作,替换匹配的字符串。之所以先进行find,因为这样可以大大提高效率。比如在整个linux kernel代码中进行替换,也会很快完成。

#!/bin/bash

if [ $# -ne 2 ]
then
    cat <    Usage:         $0 old new
    Example:       $0 old-str new-str
EOF
    exit
fi

#list=`find -type f -name "*.[hc]"`
list=`grep $1 . --include="*.[hc]" -rnl`
echo $list

for i in $list;
do
#   sed --in-place -e 's/'$1'/'$2'/g' $i;
    sed --in-place -e '/'$1'/ s//'$2'/g' $i
done

脚本:diff_src_only
作用:比较源代码
说明:该脚本对源代码进行比较,并将结果保存为patch文件。
 diff -NuraBb --exclude='*.orig' --exclude='*.o' --exclude='*.ko' \
    --exclude='*.cmd' --exclude='*.o' --exclude='CVS' --exclude='.svn' \
    --exclude='.git' --exclude='*.git' --exclude='*.mod' --exclude='.*' \
    --exclude='*.rej' --exclude='*.orig' --exclude='*.symvers' \
    --exclude='debian' --exclude='*.a' --exclude='*.mod.c' \
    --exclude='System.map' --exclude='*.so' -urN \
    $1 $2 >different.patch

脚本:code_format.sh
作用:对代码进行格式化
说明:该脚本,对代码个编程格式进行格式化。
#!/bin/bash
#Format the source code(s)
astyle --style=linux --indent=spaces=4 --brackets=linux \
        --indent-col1-comments --pad-oper --pad-header \
        --unpad-paren --add-brackets --convert-tabs \
        --mode=c --lineend=linux $@ >/tmp/astyle.log

#Deal with the log of astyle
sed -i -e 's;formatted  ;;g' /tmp/astyle.log;
sed -i -e 's;unchanged\* ;;g' /tmp/astyle.log;

#Define global variable
DIR=$PWD
#Get the directory of the source code(s) to generate the patch
line=`sed -n 1p /tmp/astyle.log`
DIR=`dirname $line`

#We needn't /tmp/astyle.log any more, delete it.
rm -rf /tmp/astyle.log

#Check if the patch file existed
if [ -e ${DIR}/linux_style.patch ]; then
    rm -rf ${DIR}/linux_style.patch
fi

#Generate the patch
DATE_TIME=$(date '+%H.%M.%S.%N')
suffix=.orig
list=`find ${DIR} -name "*"${suffix}`
echo $list
for i in $list;
do
    filename=`echo $i | sed 's/'${suffix}'$//'`;
    diff -Nura $filename${suffix} $filename >> ${PWD}/linux_style-${DATE_TIME}.patch;
    rm -rf $filename${suffix}
done



阅读(7307) | 评论(0) | 转发(0) |
0

上一篇:Linux学习笔记----initcall

下一篇:VIM Hex

给主人留下些什么吧!~~