次のような文字列があるとしましょう。
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
テキストは一致しません。