AWK CSV 작업

AWK CSV 작업

다음 내용이 포함된 csv 파일이 있습니다.

abc;!!!!;22
abc;!!!!;23
23;!!!!!;22

이제 세 번째 열에 23이 포함된 모든 행을 삭제하고 싶습니다.

왜냐면 첫 번째는 아마도 23살이겠죠. 세 번째 열의 일치 항목만 확인해야 합니다.

저는 awk 솔루션을 정말 배우고 싶기 때문에 선호합니다. 하지만 누군가 sed를 사용하여 이 작업을 수행하는 방법을 알려준다면 감동받을 것입니다!

그것은 나의 나쁜 예와 비슷할 것입니다.

awk -F ";" (if $3="23") delete Line

답변1

또 다른 변형은 "3달러가 23과 다르면 인쇄하세요"입니다.

awk -F';' '$3 != 23' file

답변2

접근 방식을 약간 수정하면 이미 작동할 수도 있습니다(테스트되지 않음).

awk -F ";" '$3 ~ /23/ {next} 1' file

"Contains"는 "무엇보다도 가지고 있다"는 뜻입니다. "같음"을 의미하는 경우 == 연산자를 사용하세요.

답변3

sed와 함께

sed '/;23$/d' infile

3개 이상의 컬럼이 가능한 경우

sed '/\([^;]*;\)\{2\}23\(;\|$\)/d' infile

아니면 ERE를 사용하세요

sed -E '/([^;]*;){2}23(;|$)/d' infile

관련 정보