하위 문자열을 포함하는 전체 단어를 추출하는 방법은 무엇입니까?

하위 문자열을 포함하는 전체 단어를 추출하는 방법은 무엇입니까?

다음과 같은 파일이 있는 경우:

example.png example.jpg example2.jpg example2.png example.swf
example2.swf example3.jpg example4.jpg example3.png example3.swf 

예를 들어 swf가 포함된 단어를 추출하고 싶은 경우 출력은 다음과 같습니다.

example.swf 
example2.swf
example3.swf

시도해 봤는데 grep -o "swf[^[:space:]]*"그냥 많이 인쇄 swf되고 그런 다음 시도해 봤는데 grep -o '[^ ]*a\.swf[^ ]*'출력이 거의 없습니다.철사"swf"가 포함되어 있습니다. 무엇을 해야할지 아는 사람 있나요?

답변1

GNU grep을 사용하십시오:

grep -o '\b\w*\.swf\b' file

산출:

example.swf
예제 2.swf
예 3.swf

\b: 너비가 0인 단어 경계

\w: 단어 문자

\.: 포인트와 일치


바라보다:스택 오버플로 정규식 FAQ

답변2

넌 할 수있어:

grep -o '[^ ]*\.swf' file.txt
  • [^ ]*0개 이상의 공백이 아닌 문자와 일치합니다.

  • \.swf문자 그대로의 의미와 일치.swf

예:

% grep -o '[^ ]*\.swf' file.txt
example.swf
example2.swf
example3.swf

답변3

첫 번째 단계

공백을 줄 끝으로 바꾸려면 다음 명령을 사용하십시오.sed

2 단계

필터 출력 사용grep

sed -e s/\ /\\n/g file | grep .swf

관련 정보