grep -f 예기치 않은 출력 생성


2

"grep -of file1.txt file2.txt"(아래 파일 내용)를 사용하여 출력을 얻습니다.

and
if
pineapple

'dif'와 'for'가없는 이유는 무엇입니까? 다른 스위치를 사용해야합니까?

file1.txt

and
dif
for
if
apple
pineapple

file2.txt

andiforpineapple

답변:


1

지정된 각 패턴에 대해 입력 파일을 다시 검색하려면 다음을 수행하십시오.

$ cat patterns.txt 
and
dif
for
if
apple
pineapple
$ cat source.txt 
andiforpineapple
$ while read; do grep -o -e"$REPLY" source.txt; done <patterns.txt
and
dif
for
if
apple
pineapple

그러나 소스 파일에 둘 이상의 행이있는 경우 원하는 출력 라인 순서와 다르게 표시됩니다. 당신이 이것을 사용하는 것을 말하지 않았기 때문에, 그것이 실제 문제에 효과가 있는지는 모르겠습니다.


안녕 프레드, My source.txt 파일에는 알려지지 않은 DNA 서열의 긴 단일 문자열이 포함되어 있으며 patterns.txt에는 알려진 작은 DNA 조각이 몇 개 포함되어 있습니다.

나는 쉘을 처음 접했으므로 그것을 분해하는 것은 당신의 종류 일 것입니다. 이것은 어떻게 작동합니까? 읽는 동안; grep -o -e "$ REPLY"를하십시오. source.txt; 완료 <patterns.txt

@Naveen : 나는 그런 종류의 DNA 매칭을 위해 다른 도구를 사용할 것입니다. while, read 및 <에 대한 도움말은 sh의 문서 (예 : man bash)에서 "help while", "help read"및 "redirection"섹션을 참조하십시오.
Fred Nurk

@Fred : "저는 그런 종류의 DNA 매칭을 위해 다른 도구를 사용할 것입니다." 이런 종류의 작업에 어떤 도구가 사용됩니까?

이것이 어떻게 작동하는지 이해했습니다. 감사! "읽는 동안 grep -oe"$ REPLY "source.txt; done <patterns.txt"

3

이것처럼 :

andiforpineapple
  ^found and
   ^continuing search from i
    ^found if
     ^continuing search from o
       ^found pineapple

안녕 리차드, 문자열의 처음부터 검색을 시작하는 방법이 있습니까?

grep에는 여러 가지 구현이 있습니다. 어느 것을 사용하고 있습니까?
Richard Brightwell

나는 grep, GNU grep 2.6.3에이 버전을 사용하고 있으며이 os, Ubuntu 11.04

이에 대한 명령 줄 옵션이 표시되지 않고 불행히도 현재 Linux VM이 종료되었습니다. 정규식의 시작과 일치하도록 \ A 앵커를 사용하도록 정규식을 향상시키는 실험을하고 싶습니다. 시도해 볼 수 있습니다. 다음은 웹에서 좋은 참조 사이트입니다 .
Richard Brightwell
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.