나는
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'
보유한 실제 스키마에 따라 이 접근 방식이 유용할 수도 있고 그렇지 않을 수도 있습니다.