패턴과 그 뒤에 오는 내용을 파악하고 나머지는 삭제하세요.

패턴과 그 뒤에 오는 내용을 파악하고 나머지는 삭제하세요.

특정 키워드와 해당 내용을 파악하는 데 문제가 있습니다. 이것은 샘플 파일이며 실제 파일은 이보다 큽니다.

user@linux:~$ cat url.txt 
abcrandomtextdef another random text blablabla
another random iwantthis text abcrandomtextdef url=https://www.google.com ghirandomtextjkl
ghirandomtextjkl another random text yadayada
wxyz iwantthis abcdef url=yahoo.com yaday
user@linux:~$ 

원하는 출력은 다음과 같습니다.

iwantthis url=https://www.google.com
iwantthis url=yahoo.com

이것은 그 결과를 얻으려는 나의 시도이지만, 보시다시피 실제로는 작동하지 않습니다.

user@linux:~$ grep url= url.txt | cut -d ' ' -f3,6
iwantthis url=https://www.google.com
abcdef
user@linux:~$ 

답변1

sed올바른 작업인 것 같습니다.

% sed -n 's/.* \(iwantthis\) .* \(url=[^ ]*\) .*/\1 \2/p' url.txt
iwantthis url=https://www.google.com
iwantthis url=yahoo.com

작동 원리:

-n-- "p" 명령과 일치하는 줄만 인쇄합니다.

s/.../p -- 검색 및 바꾸기, 일치하는 줄 인쇄

.* \(iwantthis\) .* \(url=[^ ]*\) .* -- 공백으로 둘러싸인 "iwantthis"라는 단어를 찾아 기억하고, 공백이 아닌 단어가 뒤에 오는 "url="도 찾아서 기억합니다. .*"iwantthis" 앞의 내용과 양쪽 끝 의 URL 뒤의 내용은 삭제됩니다.

/\1 \2-- 기억나는 두 단어로 바꾸세요.

관련 정보