Linux shell sed awk
生活随笔
收集整理的這篇文章主要介紹了
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 顯示文件第一行到第四行
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 done5、用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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: defconfig、 .config
- 下一篇: python进阶例题