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

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

 

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

===完整的範例===

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

==

相關說明

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

文章標籤
全站熱搜
創作者介紹
創作者 CuteParrot 的頭像
CuteParrot

馴龍窩

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