다음과 같은 도메인 및 웹 메일이 포함 된 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
답변
로 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