锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

Linux shell sed awk

时间:2023-04-23 08:37:01 tm100系s列温度传感变送器

我们的平台编译kernel总是输入项目名称很麻烦

######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################## ## Compile kernel and pack it into boot.img ## ######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################## #!/bin/sh  PROJECT=$1 echo $PROJECT if [ "$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     #编译完成后退出      exit else     echo "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" = "" ];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
        #编译完成后退出 
        #exit
else
        echo "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 

所以最终我的修改方案是第一种,网上查的办法行不通。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章