目前在工作上需要做一些 linux sh的文字處理

目的就是想要從字串 1080x2160x60vid 中,拿出2160這個數字

 

根據chatGPT的說法,就是先將第一個x前面的數字1080刪掉,再從剩餘的字串中拿出第一個x之前的2160。

[sh] linux sh對文字的處理,拿取第二個x前的數字

===完整的範例===

mode_file=/sys/class/drm/card0-DSI-1/modes
    while read line; do
        fb_width=${line%%x*};
        temp=${line#*x};
        fb_height=${temp%%x*};
        break;
    done < $mode_file
    echo $fb_width $fb_height

輸出結果為 1080 2160

===

 

也可以利用另一個IFS方法

範例. 將讀取的資料分離

使用 IFS (Internal Field Separator) ,資料會依據 IFS 所定義的區隔符號將一行資料中的資料儲存成不同變數.

1
2
3
4
while IFS=":" read -r f1 f2 f3 f4 f5 f6 f7;
do
   echo "User:" $f1
done < /etc/passwd

==

    while IFS="x" read -r fb_width fb_height fb_fps; do
        break;
    done < $mode_file

==

相關說明

[sh] linux sh對文字的處理,拿取第二個x前的數字

以上作紀錄方便日後查找。

arrow
arrow
    文章標籤
    sh文字處理 %% ##
    全站熱搜

    CuteParrot 發表在 痞客邦 留言(0) 人氣()