두 패턴 사이(및 포함) 문장을 grep하세요.

두 패턴 사이(및 포함) 문장을 grep하세요.

나는

https://www.instagram.com/p/

그리고 끝나는

/

예를 들어 x 없이 다음을 추출하고 싶습니다.

××××××https://www.instagram.com/p/BRhNDg5jne7/××××××××

난 이미 시도했어

grep "https://www.instagram.com/p/*/"

그러나 작동하지 않습니다.

답변1

다음 정규식을 시도해 보세요.https://www.instagram.com/p/[^/]\+/

#!/bin/bash
data="××××××https://www.instagram.com/p/BRhNDg5jne7/××××××××"
echo "$data" | grep -o 'https://www.instagram.com/p/[^/]\+/'

마법 같은 부분은 [^/]\+/다음 슬래시를 포함하여 모든 것을 포착한다는 것입니다.

위 스크립트의 샘플 출력입니다.

zb@server ~ $ ./tmp.sh 
https://www.instagram.com/p/BRhNDg5jne7/

답변2

grep을 사용하세요:

echo "××××××https://www.instagram.com/p/BRhNDg5jne7/××××××××"  | grep -Po "(?s)(http(.*?)(\/p\/.*\/|\/\Z))"

산출:

https://www.instagram.com/p/BRhNDg5jne7/

답변3

Perl 정규식이 필요하지 않습니다. 시도해 볼 수 있습니다.

grep -o "https://www.instagram.com/.*/"

답변4

편집: 답변을 게시한 이후 질문이 약간 변경되었으므로 이에 대한 이해도 변경되었습니다.

모든 행에 해당 패턴이 있으면 xxxx정규식을 sed. 즉:

sed 's/xxxx*//g'

grep행이 먼저 필요한 경우 sed나중에 파이프하십시오 grep. 즉:

grep "https://www.instagram.com/p/" | sed 's/xxxx*//g'

보유한 실제 스키마에 따라 이 접근 방식이 유용할 수도 있고 그렇지 않을 수도 있습니다.

관련 정보