마지막 열의 특정 단어가 포함된 줄을 별도의 파일로 컴파일하는 방법은 무엇입니까?

마지막 열의 특정 단어가 포함된 줄을 별도의 파일로 컴파일하는 방법은 무엇입니까?

csv 파일이 있는데 마지막 열에 "ecDNA"라는 단어가 포함되어 있는지 여부에 따라 두 개의 파일로 필터링해야 합니다. 원본 파일을 변경하지 않고 편집할 파일 사본이 이미 두 개 더 있습니다. 한 파일에서 "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

관련 정보