引用符間の grep 部分文字列

引用符間の grep 部分文字列

次のような文字列があるとしましょう。

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

grep日付自体を表示して/title/引用符を無視するにはどうすればよいですかZ

ファイルには、次の追加の文字列を含めることができます。

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

grepだから1つのコマンドで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テキストは一致しません。

関連情報