インストールされた購読と現在使用されている購読の終了日を知りたいです。
subscription-manager list --installed | grep Ends | awk '{print $2 }')
サブスクリプションが複数ある場合、複雑さが発生します。名前に「サーバー」を含むサブスクリプションと一致する終了日と名前をどのように取得できますか?
+-------------------------------------------+
Installed Product Status
+-------------------------------------------+
Product Name: Red Hat Enterprise Linux Server
Product ID: 69
Version: 7.7
Arch: x86_64
Status: Subscribed
Status Details:
Starts: 27/11/19
Ends: 27/11/20
Product Name: Red Hat Enterprise Linux High Availability for x86_64
Product ID: 83
Version: 7.7
Arch: x86_64
Status: Subscribed
Status Details:
Starts: 27/11/19
Ends: 27/11/20
ベストアンサー1
単一タスクの場合awk
、sed
およびを組み合わせることはほとんど必要ありません。grep
あなたの場合は、以下が機能します。
subscription-manager list --installed | awk '$2=="Name:" && $0~/Server/ {relevant_section=1;print;} \
$1=="Ends:" && (relevant_section==1) {relevant_section=0;print;}'
これにより、「Product Name:」(またはスペースで区切られた2番目のトークン)で始まる行に文字列が含まれているかどうかを示すrelevant_section
フラグが設定されます。この行は便宜上印刷されています。1
Name:
Server
Ends:
で始まる行とフラグがある場合は、その1
行を印刷してフラグをにリセットします0
。
終了日のみを印刷するには、次のように短縮できます。
subscription-manager list --installed | awk '$2=="Name:" && $0~/Server/ {relevant_section=1;} \
$1=="Ends:" && (relevant_section==1) {relevant_section=0;print $2;}'