n 번째 열에 m 번째 열이 포함 된 행을 얻는 방법


9

다음과 같은 도메인 및 웹 메일이 포함 된 CSV 파일이 있습니다.

site1.com,mail.site1.com
site2.com,testmail.com
site3.com,mx.site3.com
site4.com,smtp.site4.com
site5.com,foomail.com
site6.com,barmail.com
site7.com,webmail.site7.com
site8.com,01mx.site8.com
site9.com,foobarmail.com
site10.com,mx-smtp222.site10.com

웹 메일 열에 동일한 행의 도메인 열이 포함 된 행을 가져 오려고합니다. 위의 예에서 출력은 다음과 같아야합니다.

site1.com,mail.site1.com
site3.com,mx.site3.com
site4.com,smtp.site4.com
site7.com,webmail.site7.com
site8.com,01mx.site8.com
site10.com,mx-smtp222.site10.com

답변:


11

awk:

awk -F, '$2 ~ $1"$"' file.csv
  • -F, 필드 구분 기호를 ,

  • $2 ~ $1"$"두 번째 필드가 첫 번째 필드로 끝나는 지 테스트합니다. 그렇다면 레코드를 인쇄하십시오 (기본 조치)


grep, grep기본적으로 만 일치하는 라인을 인쇄 :

grep -E '^([^,]+),.*\1$' file.csv

을 사용 sed하면 조건에 맞는 인쇄 라인이 나타납니다.

sed -nE '/^([^,]+),.*\1$/ p' file.csv

:

% cat file.txt
site1.com,mail.site1.com
site2.com,testmail.com
site3.com,mx.site3.com
site4.com,smtp.site4.com
site5.com,foomail.com
site6.com,barmail.com
site7.com,webmail.site7.com
site8.com,01mx.site8.com
site9.com,foobarmail.com
site10.com,mx-smtp222.site10.com

% awk -F, '$2 ~ $1"$"' file.txt
site1.com,mail.site1.com
site3.com,mx.site3.com
site4.com,smtp.site4.com
site7.com,webmail.site7.com
site8.com,01mx.site8.com
site10.com,mx-smtp222.site10.com

% grep -E '^([^,]+),.*\1$' file.txt
site1.com,mail.site1.com
site3.com,mx.site3.com
site4.com,smtp.site4.com
site7.com,webmail.site7.com
site8.com,01mx.site8.com
site10.com,mx-smtp222.site10.com


% sed -nE '/^([^,]+),.*\1$/ p' file.txt 
site1.com,mail.site1.com
site3.com,mx.site3.com
site4.com,smtp.site4.com
site7.com,webmail.site7.com
site8.com,01mx.site8.com
site10.com,mx-smtp222.site10.com
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.