2014-05-21 3 views
2

나는이 형식의 파일이 있습니다grep에서 파이프 문자를 이스케이프 처리하는 방법은 무엇입니까?

coupait ||| eastern ||| 0.045454545454545456 2.718 ||| 0-0 ||| 
instaurer ||| characteristic ||| 5.797101449275362E-4 2.718 ||| 0-0 ||| 
tiendrait ||| fails ||| 0.005 2.718 ||| 0-0 ||| 

을 나는 |||로 구분되는 두 개의 변수에 저장되는 단어의 쌍을 검색하고 싶습니다.

grep '$word1 \|\|\| $word2 \|\|\|' $file 

어떻게 파일에 파이프를 일치시킬 수 있습니다 :

grep "$word1 ||| $word2 |||" $file 

는이 같은 파이프 문자를 탈출 시도 : 내가 좋아하는 헛된에서 많은 대안을 시도?

답변

4

사용 grep -F - 변수가 셸에 의해 해석되고 해당 값으로 바뀌면 따옴표로 묶은 문자열 (파이프 포함)은 고정 문자열로 해석됩니다. 예 :

$ cat file.txt 
coupait ||| eastern ||| 0.045454545454545456 2.718 ||| 0-0 ||| 
instaurer ||| characteristic ||| 5.797101449275362E-4 2.718 ||| 0-0 ||| 
tiendrait ||| fails ||| 0.005 2.718 ||| 0-0 ||| 
$ word1=coupait 
$ word2=eastern 
$ grep -F "$word1 ||| $word2 |||" file.txt 
coupait ||| eastern ||| 0.045454545454545456 2.718 ||| 0-0 ||| 
+0

인용문에 검색어를 쓰는 것이 저에게 효과적이었습니다. 감사. –

관련 문제