두 문자열 열이 같지 않을 때 행을 추출하는 방법

두 문자열 열이 같지 않을 때 행을 추출하는 방법

다음 형식의 CSV 파일이 있습니다.

text1,text2,string1,string2
text3,text3,string3,string2
text4,text5,string1,string2
text6,text6,string6,string7

컬럼1과 컬럼2가 같지 않을 때 행을 추출하고 싶습니다. 위 예에서 예상되는 결과는 다음과 같습니다.

text1,text2,string1,string2
text4,text5,string1,string2

컬럼1과 컬럼2가 같지 않은 경우. 나는 첫 번째 열을 추출하기 위해 아래와 같이 특정 열을 추출할 수 있는 명령에 익숙합니다.

cat input.csv | cut -d ',' -f1 > output.csv

답변1

이것이 다음과 같다고 가정하자간단한 CSV멋진 쉼표나 개행 삽입이 없는 파일이내에awk실제 데이터가 있는 필드의 경우 다음 방법을 사용할 수 있습니다 .

awk -F ',' '$1 != $2' <input.csv

이는 단축된 방법입니다.

awk 'BEGIN { FS = "," } $1 != $2 { print }' <input.csv

$1첫 번째와 두 번째 필드(및 $2)가 동일하지 않으면 입력 필드 구분 기호를 쉼표로 설정하고 각 줄을 인쇄합니다.

동등한 Perl 변형:

perl -F ',' -na -e 'print if $F[0] ne $F[1]' <input.csv

답변2

암소 비슷한 일종의 영양sed해결책:

sed -E '/^([^,]+,)\1/d' input.csv

산출:

text1,text2,string1,string2
text4,text5,string1,string2

답변3

$ awk -F "," '{if ($1 != $2)print $0}' filename
text1,text2,string1,string2
text4,text5,string1,string2

관련 정보