Linux shell sed awk
发布日期:2021-06-30 18:53:38
浏览次数:4
分类:技术文章
本文共 4519 字,大约阅读时间需要 15 分钟。
1、我们的平台编译kernel的时候总是要输入项目名称,很麻烦
################################################## Compile kernel and pack it into boot.img ###################################################!/bin/shPROJECT=$1echo $PROJECTif [ "$1" = "" ];then echo "Use: makeMtk.ini file for the mkkernel project_name"#exit 修改 sen -n "1p" makeMtk.ini获取makeMtk.ini的第一行数据#awk '{print $3}'获取第三个参数 #read LINE 把之前传进来的参数读取出来 sed -n "1p" makeMtk.ini|awk '{print $3}'|while read LINE do PROJECT=$LINE ./makeMtk $PROJECT new kernel ./makeMtk $PROJECT remake kernel echo ./mediatek/build/tools/images/mkbootimg --kernel ./out/Download/flash/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img ./mediatek/build/tools/images/mkbootimg --kernel ./out/Download/flash/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img done #编译完成后退出 exitelse echo "Use: $1 for the project name" PROJECT=$1fiecho ./makeMtk $PROJECT new kernel./makeMtk $PROJECT remake kernelecho ./mediatek/build/tools/images/mkbootimg --kernel ./out/Download/flash/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img./mediatek/build/tools/images/mkbootimg --kernel ./out/Download/flash/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img
看到代码里面我们每次要编译内核的时候都要输入./mkkernel mid713l_lp_lvds mid713l_lp_lvds 是项目名称,我觉得很麻烦。
2、sed读取文件的某一行
读取文件的某一行可以看看sed 这个命令
sed -n “1p” mkkernel 显示文件的第一行 sed -n “1,4p” mkkernel 显示文件第一行到第四行weiqifa@weiqifa-Inspiron-3847:~/weiqifa/new_tm100/tm100$ sed -n "1p" mkkernel ################################################weiqifa@weiqifa-Inspiron-3847:~/weiqifa/new_tm100/tm100$ sed -n "1,4p" mkkernel ################################################## Compile kernel and pack it into boot.img ###################################################!/bin/shweiqifa@weiqifa-Inspiron-3847:~/weiqifa/new_tm100/tm100$
3、 awk截取某一列
awk ‘{print $3}’ 把管道前面的第三列显示出来
weiqifa@weiqifa-Inspiron-3847:~/weiqifa/new_tm100/tm100$ cat makeMtk.iniproject = mid713l_lp_lvdsbuild_mode = engweiqifa@weiqifa-Inspiron-3847:~/weiqifa/new_tm100/tm100$ cat makeMtk.ini |awk '{print $3}'mid713l_lp_lvdsengweiqifa@weiqifa-Inspiron-3847:~/weiqifa/new_tm100/tm100$
4、while read LINE ;do done 读取文件
do done会重新起一个子shell 这是为什么我不能把$LINE传下去的原因
sed -n "1p" makeMtk.ini|awk '{print $3}'|while read LINEdoPROJECT=$LINE./makeMtk $PROJECT new kernel./makeMtk $PROJECT remake kernelecho ./mediatek/build/tools/images/mkbootimg --kernel ./out/Download/flash/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img./mediatek/build/tools/images/mkbootimg --kernel ./out/Download/flash/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.imgdone
5、用set -x set +x调试上面的说法
################################################## Compile kernel and pack it into boot.img ###################################################!/bin/shset -xif [ "$1" = "" ];then echo "Use: makeMtk.ini file for the mkkernel project_name"#exit 修改 sen -n "1p" makeMtk.ini获取makeMtk.ini的第一行数据#awk '{print $3}'获取第三个参数 #read LINE 把之前传进来的参数读取出来 sed -n "1p" makeMtk.ini|awk '{print $3}'|while read LINE do PROJECT=$LINE echo $PROJECT break done echo $PROJECT #编译完成后退出 #exitelse echo "Use: $1 for the project name" PROJECT=$1fiecho ./makeMtk $PROJECT new kernelset +x#./makeMtk $PROJECT remake kernel#echo ./mediatek/build/tools/images/mkbootimg --kernel ./out/Download/flash/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img#./mediatek/build/tools/images/mkbootimg --kernel ./out/Download/flash/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img
输出结果如下
weiqifa@weiqifa-Inspiron-3847:~/weiqifa/new_tm100/tm100$ ./wmkkernel ++ '[' '' = '' ']'++ echo 'Use: makeMtk.ini file for the mkkernel project_name'Use: makeMtk.ini file for the mkkernel project_name++ sed -n 1p makeMtk.ini++ read LINE++ awk '{print $3}'++ PROJECT=mid713l_lp_lvds++ echo mid713l_lp_lvdsmid713l_lp_lvds++ break++ echo++ echo ./makeMtk new kernel./makeMtk new kernel++ set +xweiqifa@weiqifa-Inspiron-3847:~/weiqifa/new_tm100/tm100$ vim wmkkernel
所以最终我的修改方案是第一种,网上查的办法行不通。
转载地址:https://linus.blog.csdn.net/article/details/49886953 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年05月01日 23时58分38秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
基于MATLAB的模拟调制信号与解调的仿真——SSB
2019-04-30
操作系统实验之生产者和消费者程序
2019-04-30
操作系统实验之猴子过桥问题的模拟程序
2019-04-30
POJ - 3067 Japan (树状数组 思维)
2019-04-30
POJ - 2352 Stars (树状数组 入门题)
2019-04-30
HDU - 1166 敌兵布阵 (树状数组模板题/线段树模板题)
2019-04-30
CodeForces - 761C Dasha and Password (思维 暴力)
2019-04-30
POJ - 2481 Cows (树状数组 入门题)
2019-04-30
ACM-ICPC 2018 焦作赛区网络预赛 I. Save the Room
2019-04-30
CodeForces - 987C Three displays (暴力/dp)
2019-04-30
计蒜客 NAIPC 2016 F. Mountain Scenes(dp)
2019-04-30
牛客国庆集训派对Day4——I 连通块计数(思维)
2019-04-30
牛客国庆集训派对Day4——G 区间权值(找规律,双重前缀和)
2019-04-30
牛客国庆集训派对Day5——L 数论之神(找规律/数论)
2019-04-30
CodeForces - 629B Far Relative’s Problem(模拟)
2019-04-30
CodeForces - 1059B Forgery (思维)
2019-04-30