grep 引号之间的子字符串

grep 引号之间的子字符串

假设我有一个这样的字符串:

title="2010-09-11 11:22:45Z"

我如何才能显示grep日期本身并忽略引号/标题/ Z

该文件可以包含更多字符串,例如:

randomstring
title="2010-09-11 11:22:45Z"
title="disregard me"

所以我只想grep用一个grep命令来标记时间戳。

答案1

使用GNU grep,您可以执行以下操作:

$ echo 'title="2010-09-11 11:22:45Z"' | grep -oP 'title="\K[^"]+'
2010-09-11 11:22:45Z

答案2

如果输入仅采用这种格式,那么下面的命令将轻松解决您的问题

echo "title=\"2010-09-11 11:22:45Z\"| cut -d '"' -f2 

答案3

grep -oP '[0-9-]{10} [0-9:]{8}' filename

答案4

选择引号之间任何内容的命令是:

echo 'title="2010-09-11 11:22:45Z"' | grep -oP "(?<=\").*(?=\")"

如果您只想选择双引号内的文本与特定正则表达式匹配的情况,则替换.*为该正则表达式。

例如,

echo 'title="2010-09-11 11:22:45Z"' | grep -oP "(?<=\")[0-9-]{10} [0-9:]{8}Z(?=\")"

将匹配时间戳但不匹配disregard me文本。

相关内容