2017-10-13 1 views
2

grep 다른 파일과 파일을 연결하려고합니다. 그러나 한 줄에 여러 항목이있는 문제가 있습니다.여러 줄을 여러 줄로 묶기

grep -of <(echo "VHDL\nC++\nHello") <(echo "C++ VHDL") 

내가 출력

C++ 
VHDL 

감사 그걸 얻기 위해 노력하고 있어요 때

VHDL 

를 출력합니다

여기 내 설정의 간단한 예입니다.

편집 : 원하는대로 작동하는 GNU grep이 아닌 BSD grep을 사용하고 있습니다.

+1

'echo "VHDL \ nC++ \ nHello"'의 출력을 테스트 했습니까? 힌트 :'echo'는 백 슬래시 이스케이프를 해석하지 않습니다. –

+0

@ BenjaminW. 새 줄 문자를 인쇄하는 BSD'echo'를 사용하고 있습니다. – sbdchd

+0

Bash를 사용한다면,'echo'는 시스템 명령이 아닌 내장 명령을 사용합니다 ('-e' 옵션없이 백 슬래시 이스케이프를 해석하지 않습니다). 프로세스 대체가 배쉬즘이므로 Bash를 사용하는 것 같습니다. 'type echo'는 무엇을 반환합니까? –

답변

0

귀하의 접근 방법이 유효합니다. 그러나 echo "VHDL\nC++\nHello"은 세 개가 아닌 한 행을 출력합니다. 이것은 echo이 이스케이프 문자를 해석하지 않으므로 스트림에 스트림을 삽입하기 위해 어떤 메커니즘을 사용해야하므로 발생합니다. 당신이 bash에 있다고 가정하십시오 :

$ grep -of <(echo $'VHDL\nC++\nHello') <(echo "C++ VHDL") 
C++ 
VHDL 
+0

새로운 줄을 출력하는 BSD'echo'를 사용하고 있습니다. 이 명령은 linux'grep'에서 작동하지만 BSD grep을 사용하여 예상대로 작동하지 않습니다. – sbdchd

+1

어떤 BSD 및 셸? FreeBSD와 bash는 나에게 새로운 라인을 되풀이하지 않았다. – bishop

+1

밝혀졌습니다. 시스템의 BSD 에코를 사용하지 않고 새로운 줄을 인쇄하는'zsh'의 echo를 사용하고있었습니다. 당신이 올바른지. BSD echo는 개행 문자를 출력하지 않습니다. 또한 bash는 새 행을 인쇄하지도 않습니다. Zsh는 이상한 것 같습니다. – sbdchd

관련 문제