|
发表于 2007-1-20 11:25:00
|
显示全部楼层
发现俺的也有问题,这题真不好做。
如果w目录下的p目录数量不一致,很容易出错。
改了一下:
- #!/bin/bash
- TITLE="title"
- CONTENT="content"
- ADSWT="adswt"
- NA="-------"
- wlist=""
- echo | awk '{printf("%10-s%10-s"," "," ")}'>$TITLE
- for i in `find . -name "result.txt" -exec dirname "{}" \; | cut -d'/' -f2 | uniq`;
- do
- w=`echo $i | sed -n -e 's/_/,/;p'`
- wlist=${wlist}" "$w
- echo $w | awk '{printf("%10-s%10-s",$1," ")}'>>$TITLE;
- done
- echo | awk '{printf("\n")}'>>$TITLE
- echo | awk '{printf("%10-s%10-s","p,kpa"," ")}'>>$TITLE
- for i in ${wlist};
- do
- echo | awk '{printf("%10-s%10-s","adswt, wt%"," ")}'>>$TITLE
- done
- echo | awk '{printf("\n")}'>>$TITLE
- echo "" > $CONTENT
- counter=0
- for i in `find . -name "result.txt" -exec dirname "{}" \; | cut -d'/' -f2 | uniq`;
- do
- counter=`expr $counter + 1`
- for j in `find ./$i -name "result.txt" -exec dirname "{}" \; | cut -d'/' -f3 | uniq`;
- do
- p=`echo $j | cut -d'_' -f2 | sed -n -e 's/kpa//;p'`
- a=`cat ./$i/$j/result.txt | grep "adswt" | awk '{print $2}'`
- line=`grep $p $CONTENT|cut -d' ' -f1`
- if [ "$line" = "$p" ]
- then
- awk '
- {
- if($1 == pinfo) {
- y=0
- printf("%s",$0)
- if(NF == winfo)
- printf("%10-s"," ")
- else
- for(x=NF;x<=winfo+1;x++) {
- if(y%2==0)
- printf("%10-s"," ")
- else
- printf("%10-s",na)
- y++
- }
- printf("%10-s\n",ainfo);
- }
- else
- printf("%s\n",$0)
- }' pinfo=$p ainfo=$a winfo=$counter na=$NA ${CONTENT} >> ${CONTENT}.t
- mv -f ${CONTENT}.t ${CONTENT}
- else
- echo | awk '{printf("\n%10-s",pinfo)}' pinfo=$p >> ${CONTENT}
- grep $p ${CONTENT} | awk '
- {
- y=0
- if(NF == winfo)
- printf("%10-s"," ")
- else
- for(x=NF;x<=winfo+1;x++) {
- if(y%2==0)
- printf("%10-s"," ")
- else
- printf("%10-s",na)
- y++
- }
- printf("%10-s",ainfo)
- }' ainfo=$a winfo=$counter na=$NA >> ${CONTENT}
- fi
- done
- done
- echo | awk '{printf("\n")}' >> $CONTENT
- cat $TITLE $CONTENT > $ADSWT
- rm $CONTENT $TITLE
- cat $ADSWT
复制代码
俺的目录结构如下:
- |-----w_3.9039nm
- | |-----p_2.50e+01kpa
- | | |-----result.txt
- | |-----p_5.50e+01kpa
- | | |-----result.txt
- |-----readme
- |-----mysh
- |-----w_4.2588nm
- | |-----p_4.00e+01kpa
- | | |-----result.txt
- | |-----p_5.50e+01kpa
- | | |-----result.txt
- |-----w_5.8079nm
- | |-----p_2.50e+01kpa
- | | |-----result.txt
- | |-----p_5.50e+01kpa
- | | |-----result.txt
- |-----w_6.7903nm
- | |-----p_4.00e+01kpa
- | | |-----result.txt
- |-----adswt
复制代码
最后的输出如下:
- w,3.9039nm w,4.2588nm w,5.8079nm w,6.7903nm
- p,kpa adswt, wt% adswt, wt% adswt, wt% adswt, wt%
- 2.50e+01 08.0945 ------- 13.0945
- 5.50e+01 10.0945 12.0945 14.0945
- 4.00e+01 ------- 11.0945 ------- 15.0945
复制代码
如果lz不需要结果中那些个-------,那么一个简单的sed就可以了。 |
|