假设我有一个这样的字符串:
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
文本。