如何从 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
您可以只使用 rpm
queryformat 和 bash
printf:
$ printf '%(%d %b %Y)T\n' $(rpm -q --queryformat '%{INSTALLTIME}\n' setup)
29 Apr 2020
命令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
您可以只使用 rpm
queryformat 和 bash
printf:
$ printf '%(%d %b %Y)T\n' $(rpm -q --queryformat '%{INSTALLTIME}\n' setup)
29 Apr 2020