我们如何限制 Bash 脚本输出中每个特殊字符后面的空格?

我们如何限制 Bash 脚本输出中每个特殊字符后面的空格?

我必须将所有与 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 时拆分上述输出。应使用空格进行拆分。

答案1

您可以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 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 日星期二下午 2:54:15 UTC
供应商:CentOS
描述:GNU Wget 是一个文件检索实用程序,可以使用 HTTP 或
FTP 协议。Wget 的功能包括在您注销时在后台工作、目录的递归检索、文件名通配符匹配、远程文件时间戳存储和比较、使用 Rest 和 FTP 服务器以及 Range 和 HTTP 服务器通过缓慢或不稳定的连接检索文件、支持代理服务器和可配置性。

注意:标记中的格式看起来与我的屏幕上的不同。

还要注意,egrep 没有给你提供描述,因为描述从新行开始。

最后,描述中可以有空格。此方法将捕获完整描述。

您可以使用以下方式查看可用的标签:

rpm --querytags

参考

相关内容