日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux shell sed awk

發布時間:2023/12/20 linux 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。