를 사용하여 검색을 수행했지만 grep
예상대로 작동하지 않았습니다. 내 파일에 다음 줄이 있습니다.
blacklists/redirector/domains:needyoutube.com
lacklists/redirector/domains:openyoutube.com
blacklists/redirector/domains:proxy-youtube.com
blacklists/redirector/domains:proxytoyoutube.com
blacklists/redirector/domains:streamyoutube.com
blacklists/redirector/domains:unblockyoutube.com
내가 실행할 때 :
grep ':youtube.com'
결과가 없습니다. 다음은 작동합니다:
grep 'youtube.com'
콜론( )을 피하는 방법은 무엇입니까 :
? 백슬래시(grep '\:youtube.com')가 작동하지 않습니다. 저는 RHEL 5, grep(GNU grep) 2.5.1을 사용합니다.
업데이트: grep하려는 항목을 잊어버렸습니다. 다음 항목도 존재합니다.
./blacklists/movies/domains:youtube.com
./blacklists/movies/domains:youtube.com.br
정확한 도메인 이름이 포함된 필드만 가져오고 싶습니다. 그래서 youtube.com 링크의 블랙리스트를 얻고 싶어서 ":youtube.com"을 사용합니다.
위 목록(youtube.com, youtube.com.br)에서 youtube.com만 얻어야 하는데 아무것도 얻지 못합니다.
제가 충분히 명확하게 설명하지 못했습니다. 죄송합니다.
답변1
그렙은 훌륭한 일을 합니다. 파일에 ':youtube.com'이라는 줄이 포함되어 있지 않습니다.
이 모든 라인을 일치시키려면 :
다음을 사용할 수 있습니다.
grep ":.*youtube\.com"
고쳐 쓰다:
질문을 업데이트하면 두 번째 부분에 답변해야 합니다.
위 목록(youtube.com, youtube.com.br)에서 youtube.com만 얻어야 하는데 아무것도 얻지 못합니다.
당신은 grep ':youtube.com'
실제로 필요한 일을 했습니다. 그것이 당신에게 도움이 될 수 있는 경로 옵션이라면 -R
.
답변2
"블랙리스트/리디렉터/도메인"은 실제로 파일 이름이지 파일 내용의 일부가 아닌 것 같습니다. grep ':youtube.com'
훌륭하게 작동합니다:
% cat test.txt
./blacklists/movies/domains:youtube.com
./blacklists/movies/domains:youtube.com.br
blacklists/redirector/domains:needyoutube.com
lacklists/redirector/domains:openyoutube.com
blacklists/redirector/domains:proxy-youtube.com
blacklists/redirector/domains:proxytoyoutube.com
blacklists/redirector/domains:streamyoutube.com
blacklists/redirector/domains:unblockyoutube.com
% grep ':youtube.com' test.txt
./blacklists/movies/domains:youtube.com
./blacklists/movies/domains:youtube.com.br
"youtube.com"으로 시작하는 줄을 반복적으로 찾으려면 다음을 사용하세요.grep -R '^youtube\.com' path/to/dir
답변3
다른 사람들이 지적했듯이 콜론 문자는 grep 검색 파일이 아니라 grep의 출력에 있습니다. grep이 파일에서 일치하는 줄을 찾으면 다음과 같이 표시됩니다.filename:line
현재 겪고 있는 문제는 youtube.com은 포함하지만 Proxyyoutube.com은 포함하지 않는 파일을 일치시키려는 것입니다. 그렇죠?
귀하의 경우 찾고 있는 문자열이 줄의 시작 부분에 있는 것 같으므로 다음을 수행할 수 있습니다.
grep * "^youtube.com"
위쪽 화살표 문자는 줄의 시작 부분에서만 일치하므로 "extrastuffhereyoutube.com"에서는 일치를 피할 수 있습니다.
답변4
나는 선호한다자르다
echo '
blacklists/redirector/domains:needyoutube.com
lacklists/redirector/domains:openyoutube.com
blacklists/redirector/domains:proxy-youtube.com
blacklists/redirector/domains:proxytoyoutube.com
blacklists/redirector/domains:streamyoutube.com
blacklists/redirector/domains:unblockyoutube
./blacklists/movies/domains:youtube.com
./blacklists/movies/domains:youtube.com.br
'|cut -d: -f2