当前位置: 技术问答>linux和unix
请问个cat命令的问题
来源: 互联网 发布时间:2017-01-28
本文导语: cat ${cfgfile} | sed -e /filename=system.img/d -e /filename=yaffs2_gnu_system.img/d -e s/size=734003200/size=${rootfs_size}/ -e s/size=471859200/size=${rootfs_size}/ -e s/filename=flashboot.img/filename=boot.img/ > flash.cfg; 请问这句命令的作用是? 请教...
cat ${cfgfile} | sed -e /filename=system.img/d -e /filename=yaffs2_gnu_system.img/d -e s/size=734003200/size=${rootfs_size}/ -e s/size=471859200/size=${rootfs_size}/ -e s/filename=flashboot.img/filename=boot.img/ > flash.cfg;
请问这句命令的作用是?
请教各位大侠了
请问这句命令的作用是?
请教各位大侠了
|
自己新建个文件试一下就知道了:
/filename=system.img/d 把匹配到的整行都删除了
[freebsd:~/shcode ]$cat temp.txt
filename=system.img aa
filename=yaffs2_gnu_system.img aa
size=734003200
size=471859200
filename=flashboot.img aa
[freebsd:~/shcode ]$cat sh901.sh
cfgfile=temp.txt
rootfs_size=11111
cat ${cfgfile} | sed -e /filename=system.img/d -e /filename=yaffs2_gnu_system.img/d -e s/size=734003200/size=${rootfs_size}/ -e s/size=471859200/size=${rootfs_size}/ -e s/filename=flashboot.img/filename=boot.img/ > flash.cfG
[freebsd:~/shcode ]$./sh901.sh
[freebsd:~/shcode ]$cat flash.cfG
size=11111
size=11111
filename=boot.img aa
/filename=system.img/d 把匹配到的整行都删除了
|
大概是这样,打开${cfgfile}这个变量指向的文件,然后替换里面的一些字符项,然后再写入到flash.cfg中;
|
[freebsd:~/shcode ]$cat temp.txt
filename=system.img
filename=yaffs2_gnu_system.img
size=734003200
size=471859200
filename=flashboot.img
[freebsd:~/shcode ]$cat sh901.sh
cfgfile=temp.txt
rootfs_size=11111
cat ${cfgfile} | sed -e /filename=system.img/d -e /filename=yaffs2_gnu_system.img/d -e s/size=734003200/size=${rootfs_size}/ -e s/size=471859200/size=${rootfs_size}/ -e s/filename=flashboot.img/filename=boot.img/ > flash.cfG
[freebsd:~/shcode ]$chmod u+x sh901.sh
[freebsd:~/shcode ]$./sh901.sh
[freebsd:~/shcode ]$ls
flash.cfG sh900.sh sh901.sh temp.sh temp.txt
[freebsd:~/shcode ]$cat flash.cfG
size=11111
size=11111
filename=boot.img
cat ${cfgfile} | sed -e /filename=system.img/d -e /filename=yaffs2_gnu_system.img/d -e s/size=734003200/size=${rootfs_size}/ -e s/size=471859200/size=${rootfs_size}/ -e s/filename=flashboot.img/filename=boot.img/ > flash.cfG
cat ${cfgfile}显示cfgfile变量指定的文件内容
-e选项在同一行里执行多条命令
/filename=system.img/d 匹配filename=system.img如果有就删除掉
/filename=yaffs2_gnu_system.img/d 匹配filename=yaffs2_gnu_system.img如果有就删除掉
s/size=734003200/size=${rootfs_size}/ 匹配size=734003200如果有就用size=${rootfs_size}来替换,${rootfs_size}取rootfs_size变量值
s/filename=flashboot.img/filename=boot.img/ 匹配filename=flashboot.img如果有就替换为filename=boot.img
> flash.cfG重定向处理结果到flash.cfG文件
大概是这么个意思吧