grep을 사용하여 텍스트 파일 비교

grep을 사용하여 텍스트 파일 비교

두 개의 파일이 있고 grep을 사용하여 수행할 수 있는 bye를 찾고 싶지만 문제는 bye가 파일 1의 첫 번째 열과 일치하는 것을 찾은 후에 발생합니다.

파일 1

sss aa 0030 asa bb 0040

파일 2

Hello, goodbye sjkd askdfj al;j asa but no I dont need this sfajkld goodbye sjakdlfja sss saklfj alkjfalskj

그것은 마치

if(line has goodbye && nextline has first column in file 1) print the second column in file 1

답변1

이 시도:

awk '
  NR==FNR { a[$1] = $2 ; next }
  c && c-- && ($1 in a) { print a[$1] }
  /goodbye/ { c = 1 }
' File1 File2

작동 원리:

NR==FNR여기서는 첫 번째 파일을 읽을 때만 유지되는 조건입니다. 여기서는 첫 번째 필드에서 정의한 키 아래에 두 번째 필드를 저장합니다. 이 next문을 사용하면 첫 번째 데이터 파일의 다른 후속 조건이 확인되지 않습니다.

따라서 나머지 조건은 두 번째 파일에 대해서만 확인됩니다. 일부 조건이 충족되면(두 번째 파일의 키에 따라) 첫 번째 파일에서 매핑된 값을 인쇄하려고 하며 c(그렇다면 플래그는 0으로 감소됩니다) 현재 키 값은 다음과 같아야 합니다. been 맵에 (첫 번째 파일의) 키로 존재합니다 a. 마지막으로, c주어진 패턴과 일치하는 조건이 true인 경우 플래그가 설정됩니다.

관련 정보