특정 키워드와 해당 내용을 파악하는 데 문제가 있습니다. 이것은 샘플 파일이며 실제 파일은 이보다 큽니다.
예
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
-- 기억나는 두 단어로 바꾸세요.