Linux

我們如何在 bash 腳本輸出中的每個特殊字元之後限制和留出空間?

  • June 11, 2021

我必須將所有與 rpm 相關的資訊發送到我們的日誌分析器,並且我正在執行下面的命令,該命令給出如下連續輸出:

命令

sudo rpm -qa --info | egrep 'Name|Version|Architecture|Install Date|Vendor|Description'

輸出/輸出

Name        : openssh-clients
Version     : 7.4p1
Architecture: x86_64
Install Date: Fri 29 Nov 2019 02:31:40 PM UTC
Vendor      : Amazon Linux
Description :
Name        : p11-kit-trust
Version     : 0.23.5
Architecture: x86_64
Install Date: Tue 18 Jun 2019 10:23:44 PM UTC
Vendor      : Amazon Linux
Description :
Name        : ec2-hibinit-agent
Version     : 1.0.0
Architecture: noarch
Install Date: Fri 29 Nov 2019 02:31:44 PM UTC
Vendor      : Amazon Linux
Description :
Name        : python-slip-dbus
Version     : 0.4.0
Architecture: noarch
Install Date: Tue 04 Feb 2020 12:41:09 PM UTC
Vendor      : Amazon Linux
Description :

每當 Name 出現時,我想拆分上述輸出。它應該用空格分隔。

您可以rpm使用--qf.

查詢格式是標準 printf(3) 格式的修改版本。該格式由靜態字元串(可能包括換行符、製表符和其他特殊字元的標準 C 字元轉義)和 printf(3) 類型格式化程序組成。由於 rpm 已經知道要列印的類型,因此必須省略類型說明符,並替換為要列印的標頭標籤的名稱,並用 {} 字元括起來。

egrep從你的陳述中取出並使用了格式。

sudo rpm -qa --qf "Name\t    : %{Name}\nVersion\t    : %{Version}\nArchitecture: %{Arch}\nInstall Date: %{INSTALLTIME:date}\nVendor\t    : %{Vendor}\nDescription : %{Description}\n\n"

輸出

名稱:vim-enhanced

版本:7.4.629

架構:x86_64

安裝日期:2019 年 10 月 29 日星期二 02:53:20 PM UTC

供應商:CentOS

描述:VIM(VIsual editor iMproved)是 vi 編輯器的更新和改進版本。Vi 是第一個真正的基於螢幕的 UNIX 編輯器,並且仍然非常流行。VIM 通過添加新功能對 vi 進行了改進:多視窗、多級撤消、塊突出顯示等。vim-enhanced 包包含一個 VIM 版本,其中包含最近引入的額外功能,如 Python 和 Perl 解釋器。

如果您想使用包含最近添加的增強功能(如 Python 和 Perl 腳本語言的解釋器)的 VIM 編輯器版本,請安裝 vim-enhanced 包。您還需要安裝 vim-common 軟體包。

名稱:wget

版本:1.14

架構:x86_64

安裝日期:2019 年 10 月 29 日星期二 02:54:15 PM UTC

供應商:CentOS

描述:GNU Wget 是一個文件檢索實用程序,可以使用 HTTP 或

FTP 協議。Wget 功能包括在您註銷時在後台工作的能力、目錄的遞歸檢索、文件名萬用字元匹配、遠端文件時間戳儲存和比較、將 Rest 與 FTP 伺服器結合使用以及將 Range 與 HTTP 伺服器結合使用來檢索文件緩慢或不穩定的連接、對代理伺服器的支持和可配置性。

注意:標記中的格式看起來與我的螢幕上的不同。

還要注意 egrep 沒有給你描述,因為描述從一個新行開始。

最後,描述可以有空格。此方法將擷取完整描述。

您可以使用以下命令查看可用的標籤:

rpm --querytags

參考

引用自:https://serverfault.com/questions/1008519