如何grep搜索字符串但从结果中省略字符串

时间:2018-04-04 09:18:22

标签: linux string bash search grep

我尝试使用以下命令查找SSL证书的到期日期:

openssl s_client -connect ${CERT}:443 </dev/null 2>&1 | openssl x509 -text | grep "Not After"

以下列格式将结果输出到终端:

Not After : Apr 14 10:06:09 2018 GMT

如何删除&#34; Not After:&#34;结果的一部分,只是显示:

Apr 14 10:06:09 2018 GMT

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

只需使用lookbehind摆脱它:

$ grep -Po '(?<=Not After : ).*' <<< "Not After : Apr 14 10:06:09 2018 GMT"
Apr 14 10:06:09 2018 GMT

使用(?<=Not After : ).*,我们告诉grep打印固定字符串后的所有内容&#34; Not After:&#34;。

请注意,这需要带有-P选项的grep来加载Perl正则表达式。

答案 1 :(得分:1)

一种简单的方法: -

   openssl s_client -connect ${CERT}:443 </dev/null 2>&1 | openssl x509 -text | grep "Not After" | sed 's/Not After : //g'

我在这里添加了| sed 's/Not After : //g'。现在这里sed命令将搜索字符串Not After :并将其替换为重定向到它的原始字符串。最终输出将是: -

Apr 14 10:06:09 2018 GMT

希望这会对你有所帮助。