看板Linux
标 题Re: [问题] 问一个Shell script
发信站SayYA 资讯站 (Wed May 21 19:02:25 2008)
转信站ptt!ctu-reader!ctu-peer!news.nctu!News.Math.NCTU!SayYa
※ 引述《[email protected] (电脑小玩家)》之铭言:
> ※ 引述《allen501pc (电脑小玩家)》之铭言:
> 上一篇贴错code,这个才是对的....Orz
> #!/bin/bash
> # 目的:这是用来搜寻特定文字并且合成一个file的shell script
> # 作者: allen501pc
> # 日期: 2008/04/21
> read -p "请输入您要的关键字:" -a related
> read -p "请输入您要合并搜寻到的档案名称:" result_file
> read -p "请输入您要区隔这些档案的分隔线为何?" split_diff
> tmpfile=tmp_file_`date +%H%M%S`
> grep -lr $related * > $tmpfile
> lines=`wc -l $tmpfile|awk '{print $1}'`
> for (( i=1; i!="$lines+1" ; i=i+1 ))
> do
> tmp=`head -n $i $tmpfile|tail -n 1`
> cat $tmp >> $result_file
> printf $split_diff"\n" >> $result_file
> done
> rm -rf $tmpfile
> : ****************
> : 不好意思,请问一下,上面这种Script要怎麽写成grep -lr $related * 输出给
> : array 变数接收?我试了许久还是试不出来= =
> : 难道一定要利用pipeline导向到一个file之後再来将每个搜寻出来的档案名合并成为
> : 一个file嘛?
> : 因为我想说能否利用Array 变数存放每一行grep的结果,然後利用for loop
> : 直接资料导向到一个档案上!
> : 总觉得导向到一个file感觉怪怪的... Q_Q ,但是最後妥协只好写成这样子...Orz
> : 能否有高手帮帮我?小弟感激不尽了...
> : PS:已参考 鸟哥的网站,Study-Area Shell script 教学网站
#!/bin/sh
...
touch $result_file
for i in `grep -lr $related *`
do
echo ========== $i start ========== >> $result_file
cat $i >> $result_file
echo ========== $i end ========== >> $result_file
done
--
※ Origin: SayYA 资讯站 <bbs.sayya.org>
◆ From: 220-133-85-146.hinet-ip.hinet.net