다음 내용이 포함된 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