grep을 사용하여 추출하려는 일부 링크가 포함된 정크(이상한 문자, 주석 등)가 많은 파일이 있습니다. 파일은 한 줄에 2,000단어가 넘을 정도로 매우 큽니다. 이 라인을 시도해 보면 완벽하게 일치합니다.
egrep -Eo --text "abcde192848.bmp" Untitled\ 1.txt
Abcde192848.bmp가 올바르게 반환됩니다. 하지만 BMP 링크가 많아서 시도해도 얻을 수 없습니다.
egrep -Eo --text "^abc*+.bmp" Untitled\ 1.txt
아무것도 반환하지 않습니다. 내 질문은: abc로 시작하고 bmp로 끝나는 모든 문자열을 한 줄에서 grep하는 방법은 무엇입니까? 파일은 이것과 비슷합니다
***strangechars***urlabc1239.bmp****sstrangechars***urlabc394848.bmp***
이 줄은 매우 크고 .bmp "url"이 많이 포함되어 있습니다. 내가 원하는 출력이 반환되어야 합니다.
abc449048.bmp
abc231848.bmp
abc144848.bmp
답변1
노력하다
grep -o 'abc[a-z0-9]*\.bmp'
[a-z0-9]*
0개 이상의 소문자 및 숫자와 일치합니다.\.
.
문자 그대로 문자와 일치 합니다 .
왜 ^abc*+.bmp
작동하지 않습니까?
^
행 앵커의 시작이므로 해당 행의 모든 일치 항목이 아닌 행당 최대 하나의 일치 항목만 얻을 수 있습니다.c*
c
0번 이상 일치할 것입니다 . 아마도*
쉘 글로브처럼 작동하시겠습니까?+
이것이 조합되어 어떤 역할을 할지 잘 모르겠습니다.*+
.
문자뿐만 아니라 모든 문자와 일치합니다.
.