경기 전후 20자를 잡으려면


15

경기 후 너무 많은 정보를 얻는 문제가 있습니다

grep -RnisI --color=auto "pseudomonas" *

경기 전후 20 문자 또는 10 단어 만 얻으려고합니다.

그러한 일을하는 올바른 도구는 무엇입니까?


1
너무 많은 정보에 대해 불만을 표시 할 때 옵션 세트가 약간 이상합니다. 당신은 한 줄을 원하는 이후이전에 어울리는 표시 ( -A1-B1RESP를.)하지만, 너무 많이인가? 출력물을 정확히 어디에서 자르기를 원하십니까?
Andreas Wiese

1
예상되는 입력과 출력의 예를들 수 있습니까?
Ramesh

명령을 변경했습니다. 우분투 13.10에서 테스트하여 작동하는지 알려주세요. grep 옵션과 egrep 옵션이 있습니다
Eric

답변:


24
cat file.txt | grep -o -P '.{0,20}string.{0,20}'

이것은 당신을 위해해야합니다

최신 정보:

고양이를 원하지 않으면 grep을 파일과 함께 매개 변수로 사용할 수 있습니다.

grep -o -P '.{0,20}pseudomonas.{0,20}' FileName.html

또한 -P는 매뉴얼 페이지에 실험적인 Perl Regex를 사용합니다.이 플래그를 피하려면 egrep을 대신 사용할 수 있습니다.

grep -Eo '.{0,20}yourstring.{0,20}' yourtestfile.txt

당신이 가진 못생긴 테스트 파일;)
Ouki

파일의 나머지 부분은 실제로 정말 유용합니다. 그것은 우리의 파서를 깨지 않고 제외되어야하는 Scheme의 중간에있는 여러 줄 주석의 일부입니다.
Eric

내 파일 중 하나는 755로 설정되었지만 cat이 HTML 파일에 이상적이지 않은 방법을 알 수 있으므로 파일 이름을 grep에 매개 변수로 전달하여 편집을 참조하십시오.
Eric

나는 777 개의 파일로 다른 파일의 777 사본을 가지고 있지만 씹는 것이 아닙니다. $$$ egrep -o '. {0,20} pseudomonas. {0,20}'* $$$를 실행합니다. 명령은 무한대로 유지되며 아무 것도 수행하지 않습니다. 이것은 다시 $$$ egrep -ori '. {0,20} pseudomonas. {0,20}'* $$$로 작동하는 것 같습니다. 재귀 및 대소 문자 구분과 동일합니다. 그러나 매우 느립니다. 나는 그렇게 느려서는 안된다고 생각합니다. Grep은 상당히 빨랐습니다.
Léo Léopold Hertz 준영

만약 catting이 작동하지 않는다면, > results.txt명령의 끝에 추가 하여 항상 파일에 넣을 수는 있지만 어떤 파일을 찾았는지 알려주지는 않습니다.
Eric

4
pcregrep -MnirIso '(?s).{0,20}pseudomonas.{0,20}' . |
  grep --color -e '^' -e pseudomonas

일치하는 항목과 해당 컨텍스트가 겹치지 않으며 파일 이름에 포함되지 않은 것으로 가정합니다 pseudomonas.

또한보고 된 행 번호는 컨텍스트의 시작 번호입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.