![다른 파일의 해당 행을 기반으로 가장 간단한 방법으로 잘못된 항목을 어떻게 정렬할 수 있습니까?](https://linux55.com/image/203408/%EB%8B%A4%EB%A5%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%ED%95%B4%EB%8B%B9%20%ED%96%89%EC%9D%84%20%EA%B8%B0%EB%B0%98%EC%9C%BC%EB%A1%9C%20%EA%B0%80%EC%9E%A5%20%EA%B0%84%EB%8B%A8%ED%95%9C%20%EB%B0%A9%EB%B2%95%EC%9C%BC%EB%A1%9C%20%EC%9E%98%EB%AA%BB%EB%90%9C%20%ED%95%AD%EB%AA%A9%EC%9D%84%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%A0%95%EB%A0%AC%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
두 개의 파일이 있습니다.
한 파일에는 다른 파일의 해당 줄에 "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