파일의 "완벽한" egrep, 단지 많은 쓰레기와 하나의 큰 줄

파일의 "완벽한" egrep, 단지 많은 쓰레기와 하나의 큰 줄

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*c0번 이상 일치할 것입니다 . 아마도 *쉘 글로브처럼 작동하시겠습니까?
  • +이것이 조합되어 어떤 역할을 할지 잘 모르겠습니다.*+
  • .문자뿐만 아니라 모든 문자와 일치합니다 ..

관련 정보