질문:
URL 목록에서 모든 매개변수 추출
예를 들어 링크는 다음과 같습니다.
https://www.google.com/search?q=grep+urls+from+a+file&rlz=1C5CHFA_enIL1008IL1008&oq=grep+urls+from+a+file
내가 시도한 것:
?
시작 하고 끝나는 텍스트 , =
시작 &
하고 끝나는 텍스트 또는 빈 문자열을 Grep합니다.&
원하는 결과:
q
rlz
oq
답변1
--perl-regexp
다음 옵션과 함께 grep을 사용하여 이 작업을 수행 할 수 있습니다 .
grep -Po '(?<=(\?|&))[^&]*(?==)'
(?<=(\?|&))
?
문자열 과 함께 또는&
이전에[^&]*
하지만 어떤 캐릭터라도&
(?==)
=
뒤에 끈이 있어요
답변2
귀하의 URL이 다음 파일에 있다고 가정합니다 file
.
sed -e 's/[^?]*[?]//' -e 's/=[^&]*//g' -e 'y/&/\n/' file
물음표 자체를 포함하여 첫 번째 물음표 앞의 URL 부분을 제거하는 것부터 시작하세요.
첫 번째 대체 후 예제 URL에 남아 있는 내용은 다음과 같습니다.
q=grep+urls+from+a+file&rlz=1C5CHFA_enIL1008IL1008&oq=grep+urls+from+a+file
두 번째 대체는 모든 매개변수 값을 제거하고 제한 &
문자를 유지합니다. a로 시작 =
하고 &
문자가 아닌 것으로 구성된 모든 문자열을 제거합니다 . 귀하의 예를 바탕으로 다음이 생성됩니다.
q&rlz&oq
최종 표현식은 각 문자를 &
리터럴 개행 문자로 바꿉니다.
q
rlz
oq