पंक्तियों को कैसे प्राप्त करें जिनके nth कॉलम में mth कॉलम है


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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.