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