다른 파일의 해당 행을 기반으로 가장 간단한 방법으로 잘못된 항목을 어떻게 정렬할 수 있습니까?

다른 파일의 해당 행을 기반으로 가장 간단한 방법으로 잘못된 항목을 어떻게 정렬할 수 있습니까?

두 개의 파일이 있습니다.

한 파일에는 다른 파일의 해당 줄에 "NOPE"라는 문자열이 포함되어 있는 경우 삭제해야 하는 문자열 목록이 있습니다. "YES"가 포함되어 있으면 그대로 유지됩니다. 행을 삭제하면 순서가 깨질 수 있습니다. 형식은 다음과 같습니다.

1.txt:

Jimmy
John
Johnson

2.txt:

YES
NOPE
YES

올바른 출력:

Jimmy
Johnson

수천 개의 항목에 대해 이 작업을 수행하는 가장 쉬운 방법은 무엇입니까?

답변1

당신은 이것을 할 수 있습니다

paste 2.txt 1.txt | awk '$1 == "YES" {print $2}'

(단어 문자열의 경우) 또는

awk 'NR==FNR && $0=="YES" {i[FNR]; next} FNR in i' 2.txt 1.txt

관련 정보