Awk

從 /etc/redhat-relase 中提取 Red Hat 版本級別

  • July 20, 2022

我需要編寫一種將 Red Hat 盒子的實際發布級別拉入變數的方法。

我專注於/etc/redhat-release文件。我以為會很簡單awk '{ print $7 }',但是 RH8 將值更改為第 6 個字,所以簡單的解決方案就出來了。(我在這個網站上搜尋過類似的問題,但答案都與值的穩定位置有關。在這種情況下,我們不知道 OS 版本將在哪個欄位編號中)。

例子:

Red Hat Enterprise Linux Server release 6.10 (Santiago)
Red Hat Enterprise Linux Server release 7.9 (Maipo)
Red Hat Enterprise Linux release 8.6 (Ootpa)
Red Hat Enterprise Linux release 8.5 (Ootpa)

我認為使用sed是我最好的選擇。

  1. 6.找到以、7.或開頭的第一個單詞8.,並獲取該值 ( [678]\.)。這可能是最安全的。
  2. 或者搶後面的第一個詞release

我想知道對於使用sedorawk或其他工具的一種好的、簡單的方法,有什麼建議?

您可以解析release可能包含的其他文件之一。

我認為 RHEL/etc/os-release可以通過簡單地採購它來提供變數中的作業系統版本:

source /etc/os-release; echo $VERSION_ID

它還包括許多其他方便的作業系統相關變數。

您可以lsb_release為此使用:

$ lsb_release -rs
8.6

另一種不需要lsb_release的方法是解析/etc/os-release(這是RHEL 9 及更高版本的建議):

awk -F'[="]' '/VERSION_ID/ { print $3 }' /etc/os-release

引用自:https://unix.stackexchange.com/questions/710596