검색어(파일 이름 아님)를 grep으로 파이프

검색어(파일 이름 아님)를 grep으로 파이프

특정 숫자가 포함된 파일에서 특정 줄을 선택하고 싶습니다. 검색하려는 파일 이름은 입니다 os_clusters/piRNA_clusters.bed.

awk '{if (a[$0]++ == 0) {split($0,b,"."); ;split(b[1],c,"r"); print c[3]}};' test_non_enriched | xargs grep {} os_clusters/piRNA_clusters.bed

첫 번째 부분(파이프라인 전)이 작동합니다. 즉, 8707, 8824 등과 같이 검색할 용어를 생성합니다. 그러나 후반부는 작동하지 않습니다.

awk '' ... | xargs grep {} os_clusters/piRNA_clusters.bed

파이프라인에서 생성된 용어에 대한 대상 파일을 검색하지 않지만 검색 용어를 입력 파일로 처리합니다. 따라서 다음과 같은 오류 메시지가 나타납니다.

grep: 8707: No such file or directory
grep: 8824: No such file or directory

os_clusters/piRNA_clusters.bed파이프라인에서 생성된 용어에 대해 파일을 검색하려면 무엇을 변경해야 합니까 ?

답변1

내 생각엔 네가 원하는 것 같아

... | grep -f - os_clusters/piRNA_clusters.bed

-fgrep파일에서 검색 패턴을 가져오도록 지시 하고 -파일이 실제로 표준 입력(귀하의 경우 파이프 출력)임을 알려줍니다.

비 GNU grep사용 에 대한 의견을 주신 @rici에게 감사드립니다.

... | grep -f /dev/stdin os_clusters/piRNA_clusters.bed

관련 정보