Linux shell sed awk
发布日期:2021-06-30 18:53:38
浏览次数:3
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年05月04日 01时24分03秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
JavaScript DOM对象操作详解
2019-04-30
JavaScript 表单操作与MD5加密
2019-04-30
JAVA学习笔记4 - 循环与分支结构
2019-04-30
JAVA学习笔记6 - 数组
2019-04-30
JAVA学习笔记8 - Stream 和 File I/O
2019-04-30
JAVA学习笔记9 - 异常
2019-04-30
JAVA学习笔记10 - 继承
2019-04-30
JAVA学习笔记11 - 接口interface
2019-04-30
JAVA学习笔记12 - 包package
2019-04-30
Android 开发学习笔记 00 - Getting Started
2019-04-30
【学习笔记】Android Activity
2019-04-30
【学习笔记】Android Fragments
2019-04-30
Android使用Retrofit_00_Getting Started
2019-04-30
Android使用Retrofit_01_OAuth2 + GitHub
2019-04-30
Django + REST学习笔记
2019-04-30