2개의 파일을 비교하세요.

2개의 파일을 비교하세요.

file.txt2개의 스크립트 가 있고file2.txt

파일 1.txt

|col1|col2| 
|name|mandatory|
|age|mandatory| 
|address|mandatory|
|email|mandatory| 
|country|not-mandatory| 

파일 2.txt

|col1|col2| 
|name|gabrielle| 
|age|| 
|address|nashville| 
|email|[email protected]| 
|country|| 

해당 열이 강제 적용되는 file1의 모든 행을 가져오려면 임시 파일을 만들어야 합니다. 그런 다음 file2에 언급된 필수 필드가 비어 있는지 확인해야 합니다.

예상 출력:

age mandatory

답변1

다음을 사용할 수 있습니다 awk.

awk -F '|' '
    NR==FNR && $3=="mandatory" {m[$2]++}
    NR>FNR && $3=="" && m[$2] {printf "%s mandatory\n", $2}
' file1.txt file2.txt

산출

age mandatory

설명하다

awk두 파일의 각 줄을 반복합니다. 레코드 구분 기호가 고려됩니다 |. 이는 첫 번째 필드가 항상 비어 있음을 의미합니다.

file1.txt스크립트의 첫 번째 줄은 세 번째 필드 ( 지금까지 읽은 레코드 수는 현재 파일의 줄 번호와 일치함) NR가 있는 줄을 찾고 mandatory두 번째 필드를 배열에 저장합니다.

스크립트의 두 번째 줄은 줄 file2.txt(현재 파일의 줄 번호보다 읽은 레코드 수)을 찾고, 세 번째 필드가 비어 있고 이전에 만든 목록에 있으면 첫 번째 필드의 이름을 인쇄합니다.

관련 정보