마지막 열에 "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