当前位置: 技术问答>linux和unix
求助: 用shell 给某个目录下所有.c文件的第一个#include<**>前面加几行代码
来源: 互联网 发布时间:2016-04-10
本文导语: 求助: 用shell 给某个目录下所有.c文件的第一个#include前面加几行代码 比如原来 //注释, 不知道几行 #include #include int main() { } 修改后 //注释 #if #else #end #include #include int main() { } | for file in ...
求助: 用shell 给某个目录下所有.c文件的第一个#include前面加几行代码
比如原来
//注释, 不知道几行
#include
#include
int main()
{
}
修改后
//注释
#if
#else
#end
#include
#include
int main()
{
}
比如原来
//注释, 不知道几行
#include
#include
int main()
{
}
修改后
//注释
#if
#else
#end
#include
#include
int main()
{
}
|
for file in $(ls *.c)
do
line=$(cat $file | sed -n '/^#include/=' | head -1)
sed -i $line'i #ifn#elsen#end' $file
done
do
line=$(cat $file | sed -n '/^#include/=' | head -1)
sed -i $line'i #ifn#elsen#end' $file
done
|
append="appendFileName"
tag="#include"
temp="file.num"
for file in `ls *.c`
do
grep -n "#include" $file | awk -F ':' '{print $1}' > $temp
line=`head 1 $temp`
if [ -n $line ]
then
lines=`expr $line -1`
head $line $file > $file.tmp
cat $append >> $file.tmp
total=`wc -l $file | awk '{print $1}'`
lines=` expr $total - $lines`
tail $lines >> $file.tmp
rm $file
mv $file.tmp $file
fi
done
没怎么写shell脚本.
这只是一种思路:先确定#include在第几行,然后把#include前面的内容输出到临时文件中,然后再把附加的内容也输出到临时文件,接着把第一个#include此后的内容再输出到临时文件,把原来的文件删除,再把临时文件重名命名.
随手写的,不对的地方请见谅.
tag="#include"
temp="file.num"
for file in `ls *.c`
do
grep -n "#include" $file | awk -F ':' '{print $1}' > $temp
line=`head 1 $temp`
if [ -n $line ]
then
lines=`expr $line -1`
head $line $file > $file.tmp
cat $append >> $file.tmp
total=`wc -l $file | awk '{print $1}'`
lines=` expr $total - $lines`
tail $lines >> $file.tmp
rm $file
mv $file.tmp $file
fi
done
没怎么写shell脚本.
这只是一种思路:先确定#include在第几行,然后把#include前面的内容输出到临时文件中,然后再把附加的内容也输出到临时文件,接着把第一个#include此后的内容再输出到临时文件,把原来的文件删除,再把临时文件重名命名.
随手写的,不对的地方请见谅.
|
sed -i 's/^#include/#if 1n abcdnelse abcd n #endif n#include/g' test.c
把abcd换成你自己的内容就可以了
把abcd换成你自己的内容就可以了
|
顶一楼,有个小错:)