आंशिक रूप से स्ट्रिंग मिलान (यदि कॉलम / शब्द आंशिक रूप से मेल खाता है)


84

मेरी डमी फ़ाइल इस तरह दिखती है:

C1    C2    C3    
1     a     snow   
2     b     snowman 
snow     c     sowman

अगर snow$ 3 में स्ट्रिंग है तो मैं लाइन प्राप्त करना चाहता हूं । मैं इसे इस तरह कर सकता हूं:

awk '($3=="snow" || $3=="snowman") {print}' dummy_file

लेकिन अधिक सरल तरीका होना चाहिए।

जवाबों:


160
awk '$3 ~ /snow/ { print }' dummy_file 

28
कड़ाई से बोलते हुए, प्रिंट की आवश्यकता नहीं है: '$3~/snow/'पर्याप्त
शीटजेएस

2
दुख की बात है कि लिंक पहले ही मर चुका है: यहाँ वर्तमान कड़ी है shop.oreilly.com/product/9781565924277.do
Stedy

आपका पैटर्न "स्नो" है, जबकि अगर कोई विशेष प्रतीक है, जैसे कि मेरे मामले में, सूचकांक () एक बेहतर समाधान है।
किउ यांगफैन

क्या चेक को नकारने का कोई तरीका है? मुझे पता है कि हम 'प्रिंट' के बजाय 'नेक्स्ट' का उपयोग कर सकते हैं और बाकी सब कुछ प्रिंट कर सकते हैं, लेकिन बस कुछ निर्देशों के साथ जांच कर रहे हैं
सहस

5
उपयोग ! इसलिए उदाहरण के लिए awk '$ 3! ~ / foo /'
अहमद मसूद

41

सूचकांक () फ़ंक्शन के साथ विकल्प की तलाश करके भी संभव है:

awk '(index($3, "snow") != 0) {print}' dummy_file

छोटा संस्करण:

awk 'index($3, "snow")' dummy_file

7
यह अहमद मसूद के जवाब से बेहतर है, क्योंकि यह "हिमपात" को शाब्दिक स्ट्रिंग के रूप में संसाधित करता है, नियमित अभिव्यक्ति के रूप में नहीं।
जारो

6
आप इसे और भी सरल लिख सकते हैं:awk 'index($3, "snow")' dummy_file
jarno

2
मैं सहमत हूं कि यह मेरे जवाब से बेहतर है।
अहमद मसूद



2

GNU sed

sed '/\s*\(\S\+\s\+\)\{2\}\bsnow\(man\)\?\b/!d' file

इनपुट:

सी 1 सी 2 सी 3    
1 बर्फ   
2 बी स्नोमैन 
बर्फ सी sowman
      स्नो स्नोमैन

..output:

1 बर्फ
2 बी स्नोमैन

9
यह एक बहुत ही सीधे आगे के सवाल का अधिक जटिल जवाब नहीं हो सकता है।
सैम

1
इसके अलावा, यह sedपूरे शब्दों के लिए उपयोग करने के लिए बहुत जोखिम भरा है । तकनीकी रूप से संभव है, इसके लिए मज़बूती से काम करने के लिए, मुझे लुक-बैक, लुक-फ़ॉरवर्ड के साथ-साथ !?कंस्ट्रक्शन का भी उपयोग करना पड़ा जब यह उन शब्दों के बारे में था जिनका पालन नहीं करना चाहिए । यह दिल के बेहोश होने के लिए कुछ भी नहीं है, यह सुनिश्चित करने के लिए है। (और त्रुटियों के लिए प्रवण हैं जो उन्हें खोजने और ठीक करने के लिए बहुत समय का उपभोग कर सकते हैं।)
वाक्यविन्यास
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.