마지막 열의 특정 단어가 포함된 줄을 별도의 파일로 컴파일하려면 어떻게 해야 합니까?

마지막 열의 특정 단어가 포함된 줄을 별도의 파일로 컴파일하려면 어떻게 해야 합니까?

마지막 열에 "ecDNA"라는 단어가 포함되어 있는지 여부에 따라 두 개의 파일로 필터링해야 하는 csv 파일이 있습니다. 원본 파일을 변경하지 않고 편집할 수 있는 파일 사본이 이미 두 개 있습니다. 한 파일에서 "ecDNA"가 포함되지 않은 모든 줄을 제거하고 파일의 다른 복사본에서 "ecDNA"가 포함된 줄만 유지하는 방법이 있습니까?

답변1

awk -F, '$NF ~ /ecDNA/' oldfile > newfile

NF는 현재 입력 행의 필드(열) 수이므로 $NF는 마지막 필드의 값(내용)입니다. $NF에 "ecDNA"가 포함되어 있으면 해당 줄을 인쇄합니다. 그렇지 않으면 무시하십시오.

대소문자를 구분하지 않고 일치해야 하는 경우(그리고 GNU awk를 사용하는 경우) 다음을 사용하세요.

awk -F, -v IGNORECASE=1 '$NF ~ /ecDNA/' oldfile > newfile

역방향 일치( ecDNA마지막 필드에 없는 행)의 경우 조건 연산자를 무효화합니다.

awk -F, '$NF !~ /ecDNA/' oldfile > newfile2

관련 정보