2014-09-25 2 views
-1

필자는 file1을 file2와 한 줄씩 일치시켜야합니다. 하지만 file1 아래 형식입니다. file2에서 아래 줄을 사용하여 검색하려면 ak 명령을 사용하는 경우 구문 오류가있는 던지는 오류 '='.awk에서 특수 문자가있는 패턴을 검색하는 방법

을 File1 :

Country_code=US/base_div_nbr=18/retail_channel_code=1/visit_date=2010-01-02/load_time_stamp=20100102058100 
Country_code=US/base_div_nbr=18/retail_channel_code=1/visit_date=2010-01-02/load_time_stamp=20100102091000 
Country_code=US/base_div_nbr=18/retail_channel_code=1/visit_date=2010-01-02/load_time_stamp=20100102067000 

있는 File2 : 검색 패턴 명령 아래 사용하여 파일 2에서 검색하는 나는이 파일 1에서 전체 라인을했다

Country_code=US/base_div_nbr=18/retail_channel_code=1/visit_date=2010-01-02/load_time_stamp=20100102058100 
Country_code=US/base_div_nbr=18/retail_channel_code=1/visit_date=2010-01-02/load_time_stamp=20100102091000 

: 여기

awk "/$line/ {print ;}" file2 

파일 1을, 3 번째 레코드가 file2에 없습니다. 따라서이 차이점을 알아야합니다.

쉘 스크립팅에 대한 새로운 경험이 있으므로 제발 제안 해주십시오.

+1

왜 그냥'GREP을하지 시도해 볼 수도,

당신이 정말로 awk을 함께하고 싶어

comm <(sort file1) <(sort file2) 

또는

grep -Fxf file1 file2 
중 하나를 수행 할 수 - vf f2 f1'? – fedorqui

+0

두 파일에서 공통적 인 행을 가져 오시겠습니까? – confused00

+1

질문을 편집하고 수행 한 작업을 보여주십시오. 파일을 어떻게 읽니? '$ line'은 어디에 정의되어 있습니까? 당신이 얻는 정확한 오류는 무엇입니까? – terdon

답변

0

이것은 당신이 모두 입력 파일을 정렬 할 수 있습니다 가정, 정말 comm에 대한 일이지만, 당신이 당신의 무언의 요구 사항에 따라 그것을 할 수처럼 AWK 뭔가를 사용하려면 :

awk 'NR==FNR {file1[NR]=$0; next} $0 != file1[FNR]' file1 file2 
0

을 만약 내가 제대로 이해하고 두 파일에 공통 인 행을 인쇄하려고합니다. 이 경우 awk이 실제로 가장 좋은 도구는 아닙니다. 대신 당신은

awk 'FNR==NR{a[$0]; next} $0 in a' file1 file2