Linux shell sed awk
1、我们的平台编译kernel的时候总是要输入项目名称,很麻烦
################################################
## Compile kernel and pack it into boot.img ##
################################################
#!/bin/sh
PROJECT=$1
echo $PROJECT
if [ "$1" = "" ];thenecho "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 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#编译完成后退出 exit
elseecho "Use: $1 for the project name"PROJECT=$1
fi
echo ./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
看到代码里面我们每次要编译内核的时候都要输入./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/sh
weiqifa@weiqifa-Inspiron-3847:~/weiqifa/new_tm100/tm100$
3、 awk截取某一列
awk ‘{print $3}’ 把管道前面的第三列显示出来
weiqifa@weiqifa-Inspiron-3847:~/weiqifa/new_tm100/tm100$ cat makeMtk.ini
project = mid713l_lp_lvds
build_mode = eng
weiqifa@weiqifa-Inspiron-3847:~/weiqifa/new_tm100/tm100$ cat makeMtk.ini |awk '{print $3}'
mid713l_lp_lvds
eng
weiqifa@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 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
5、用set -x set +x调试上面的说法
################################################
## Compile kernel and pack it into boot.img ##
################################################
#!/bin/sh
set -x
if [ "$1" = "" ];thenecho "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 LINEdoPROJECT=$LINEecho $PROJECTbreakdoneecho $PROJECT#编译完成后退出 #exit
elseecho "Use: $1 for the project name"PROJECT=$1
fi
echo ./makeMtk $PROJECT new kernel
set +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_lvds
mid713l_lp_lvds
++ break
++ echo++ echo ./makeMtk new kernel
./makeMtk new kernel
++ set +x
weiqifa@weiqifa-Inspiron-3847:~/weiqifa/new_tm100/tm100$ vim wmkkernel
所以最终我的修改方案是第一种,网上查的办法行不通。
Linux shell sed awk相关推荐
- linux shell sed awk 命令(2)-awk
linux shell sed awk 命令(2)-awk awk语法格式: awk [选项] -f program-file [ -- ] file ... 选项: -F fs, --field-s ...
- linux grep sed awk
linux 文本编辑命令grep sed awk(转) grep grep (global search regular expression(RE) and print out the li ...
- linux shell之awk
1 awk awk 是一款设计用于数据流的工具, awk有很多内建的功能,比如数组.函数等,这是它和C语言的相同之处 awk 脚本的结构基本如下所示: awk ' BEGIN{print " ...
- linux shell sed i,Linux Shell学习-sed命令详解
(1).sed介绍 Sed是流编辑器,stream editor,它是一个将一些列编辑命令作用于一批文本文件的理想工具. (2).sed工作原理 Sed是一个非交互式文本编辑器,它可以对文本文件和标准 ...
- 【Linux】 sed AWK
文章目录 sed AWK 与 Vim的区别 sed sed的替换命令 sed 替换加强版 全局替换 标志位 寻址替换 分组 脚本文件 其他命令 删除 追加插入 和更改 rw 文件 行号 打印 p p ...
- Linux Shell 命令--awk
说明: awk被设计用于数据流,能够对列和行进行操作.而sed更多的是匹配,进行替换和删除. awk有很多内建的功能,比如数组,函数等.灵活性是awk的最大优势. awk的结构 awk ' BEGI ...
- shell ,sed,awk 基本用法汇总
2019独角兽企业重金招聘Python工程师标准>>> 1 shell 它是一门解释型语言,一般叫做脚本或shell脚本 1.1 分类 ksh tcsh ...
- linux shell sed 单引号, 双引号,反引号, 斜杆, 反斜杆(‘ “ ` / \)
前言: 来看这个内容的,估计和我一样被绕晕了, 找不到规则.其实这是shell比较灵活导致的. 其实遵循如下原则可以避免莫名其妙的意外(少掉头发). 1) 坚决不使用反引号(`), 坚决使用$() ...
- linux shell 指令 awk 是什么意思
参考资料: linux awk命令详解 - ggjucheng - 博客园 这是一个强大的文本分析工具. 力扣
最新文章
- [2014百度之星资格赛]
- 5折交叉验证_[Machine Learning] 模型评估——交叉验证/K折交叉验证
- android api接口封装,生成App接口
- 《Linux高性能服务器编程》学习笔记
- git-svn — 让git和svn协同工作
- redis php怎么使用教程,PHP 使用redis
- linux mysql root用户密码_Linux下修改Mysql的用户(root)的密码
- jQuery+toggle
- bootstrap方法_中介效应中的bootstrap方法
- Android开发笔记(十七)GIF动画的实现GifAnimation
- Windows 制作免安装的JAVA环境
- 设计图标(logo)
- SQL Server2005 只有配置工具,而没有查询分析器、企业管理器的解决方法
- 全球各个国家名的英文
- C++初学者遇到的LNK1120无法解析的外部命令部分可能原因
- django1.8下的markdown、highlight、pagedown解决
- jvm 调优 java 虚拟机 马士兵 马士兵 马士兵 笔记
- Fama-French 三因子模型介绍、修改与框架搭建
- 昕诺飞针对青少年视力健康发布瞳乐光技术系列台灯
- 坑一:canal 的一处TODO 引发的一地华子
热门文章
- mysql my.cnf 配置建议
- MongoDB(4)--MongoDB服务的启动
- JVM对象占用内存计算
- web服务器文件管理,web文件管理服务器
- qt release打包发布_几种解决Qt程序打包后无法连接数据库问题的方法
- oracle 未找到段的存储定义,Exp-00003 no storage definition found issue in oracle 11g (未找到段 (0,0) 的存储定义)...
- modbus从站模拟软件_作为工控电气人,你知道我们必备的软件有哪些吗?
- JavaScript中的正则
- 21.判断栈弹出顺序是否正确
- jpush 极光推送 java