如何从 Bash shell 中的输出中截断字符串?

how can i cut off the strings from an output in Bash shell?

命令i 运行如下:

rpm -qi setup | grep Install

命令的输出:

Install Date: Do 30 Jul 2020 15:55:28 CEST

我想进一步编辑此输出,以便仅保留: 30 Jul 2020

其余的输出不显示。

bash 中最好的编辑方式是什么我可以简单地得到这个最终结果吗?

像这样使用 grep -Po-P = 使用 Perl 正则表达式引擎,并且 -o = 只打印匹配项,而不是整行):

echo '**Install Date: Do 30 Jul 2020 15:55:28 CEST**' | grep -Po '\d{1,2}\s+\w{3}\s+\d{4}'

您也可以像这样使用 cut-d' ' = 空格分割,-f4-6 = 打印字段 4 到 6):

echo '**Install Date: Do 30 Jul 2020 15:55:28 CEST**' | cut -d' ' -f4-6

输出:

30 Jul 2020

您可以只使用 rpmqueryformat 和 bashprintf:

$ printf '%(%d %b %Y)T\n' $(rpm -q --queryformat '%{INSTALLTIME}\n' setup)
29 Apr 2020