따옴표 사이의 grep 하위 문자열

따옴표 사이의 grep 하위 문자열

다음과 같은 문자열이 있다고 가정해 보겠습니다.

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

grep날짜 자체를 표시하고 /title/ 따옴표를 무시하려면 어떻게 해야 합니까 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텍스트는 일치하지 않습니다.

관련 정보