在一个文件A.txt中找用到图片的名称(SOURCE_FILE ),见下文!然后按照NAV_PROG_DETAIL_FRAME.png这样的文件名在另外一个文件夹下找相应的图片,找到后把这个图片Copy到一个新的文件夹下。挺没意思的,但是再一看,好几百文件啊,这么一个一个复制到啥时候啊!!!于是我就琢磨用个脚本来实现!
[FILE=NAV_IMG]
PATH = "..\nav_img_8888.i"
FORMAT = "C"
[IMAGE_CONFIG = t_g_nav_frame_bk_bmp]
CONFIG_VARIABLE_NAME = "t_g_nav_frame_bk_bmp"
IMPLEMENT_FILE = "NAV_IMG"
SOURCE_FILE = "NAV_PROG_DETAIL_FRAME.png"
MSG_REPORT = 0
COMPRESSED = 1
[IMAGE_CONFIG = t_g_nav_hlt_bar_bmp]
CONFIG_VARIABLE_NAME = "t_g_nav_hlt_bar_bmp"
IMPLEMENT_FILE = "NAV_IMG"
SOURCE_FILE = "NAV_CH_LST_HT.bmp"
COMPRESSED = 1
、、、、、、
首先我想用脚本把A.txt中用到的所有图片名都筛选出来,这样我选择了AWK来实现,由于当时不熟悉就分了三步:
一、 $ awk '/SOURCE_FILE /{print}' A.txt
解释:显示文本文件A.txt 匹配(含有)字符串"SOURCE_FILE"的所有行
结果:
SOURCE_FILE = "NAV_PROG_DETAIL_FRAME.png"
SOURCE_FILE = "NAV_CH_FRAME.png"
SOURCE_FILE = "NAV_CH_LST_HT.bmp"
、、、、、、
高兴啊,终于把图片名字搞出来了。不过我现在只需要NAV_PROG_DETAIL_FRAME.png这样的名字而已,然后我又学习AWK,发现可以用 :$ awk '{print $3 }' A.txt 可以把"NAV_PROG_DETAIL_FRAME.png"提取出来,这里边$3表示域的意思。还多出了一些引号,因此我就着手把引号去掉,学习了半天,找到了一个方法 $ awk -F "[ \" \" ]" '{print $2}' A.txt 可以提取引号中的内容,这里边大功臣可是 "[ \" \" ]" 这个啊,放括弧里边的正是两个引号! \" 肯定是匹配引号呗!
结果:
NAV_PROG_DETAIL_FRAME.png
NAV_CH_FRAME.png
NAV_CH_LST_HT.bmp
、、、、、、
上边的输出结果都是在终端下打印出来的,能不能定向到一个文件中呢?是可以的!
$ awk '/SOURCE_FILE /{print}' A.txt >txt1.txt
$ awk '{print $3 }' txt1.txt >txt2.txt
$ awk -F "[ \" \" ]" '{print $2}' txt2.txt >txt3.txt
好啦,接下来是不是要用这个txt3.txt来找到相应的图片呢?开始吧,我用bash编写脚本,命令:$ vi FILE 来创建一个名为:FILE的文档。假设我文件都放在 /opt/test/下,输入以下内容:
##############################################################
#FILE_NAME:FILE
#AUTHOR:chenfeng
#EMAIL:chenfeng10000@126.com
######################################################
#!/bin/sh
clear
i=1
#j=NULL
mkdir /opt/test/BMP
cd /opt/test
#计算这个txt3里边共有多少行,刚才提取的图片名称在txt3中试一行一行存在的!别问我为什么,只能怪#awk太强大!
length=`awk 'END{print NR}' /opt/test/txt3.txt`
while (( $i <= $length ))
#下来就是把txt3中一行一行的名字拿出来赋值给choice。
do
choice=`awk "{if ( NR == $i ) print }" /opt/test/txt3.txt`
# echo $choice
# echo "$choice"
# if ($choice != $j)
# then
cp /opt/test/Res/$choice ./BMP #这句就是Copy文件啦
# else
# echo "No such file!"
# fi
i=`expr $i + 1` #这句就是一行一行的增加
done
#############################################################
编辑好后,给FILE加上可运行的权限 就可以了!
$chmod +x FILE 或者$chmod -R 777 FILE
然后 $ source FILE 就OK啦!