다음과 같은 문자열이 있다고 가정해 보겠습니다.
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
텍스트는 일치하지 않습니다.