arrays - Search pattern and print hits lower than threshold -


यहाँ एक उदाहरण है जिसे मुझे चाहिए:

INPUT:

  एक 5 एक 7 एक 11 बी 10 बी 11 बी 12 । ।   

आउटपुट:

  एक 2 बी 0   

इसलिए मेरे थ्रेशोल्ड से कम हिट होने चाहिए यह मामला यह 2 डॉलर है & lt; 10)।

मेरा कोड है:

  awk 'OFS = "\ t" {v [$ 1] + = $ 2; N [$ 1] ++} END {के लिए (एल में) {प्रिंट एल, एन [एल}}} 'इनपुट   

और मेरा आउटपुट है

 < कोड> एक 3 बी 3   

मुझे यकीन नहीं है कि कंडीशन को कहां रखें $ 2 & lt; 10

आप थ्रेसहोल्ड स्टेटमेंट जैसे $ 2 & lt; -v value = XX के साथ दिया गया awk चर है।

इसके अलावा, आप v [$ 1] + = $ 2 का उपयोग कर रहे हैं: यह राशि, मेल खाने वाले मामलों की गिनती नहीं है।

सब एक साथ, मैं इसका उपयोग करूँगा:

 < Code> awk -vt = 10 '{list [$ 1]} $ 2 & lt; t {count [$ 1] ++} END {के लिए (i सूची में) प्रिंट मैं, गिनती [i] +0}' file   

ध्यान दें हमें दो सरणियों का उपयोग करने की आवश्यकता है: एक को काउंटर का ट्रैक रखने के लिए और अन्य सभी संभावित मानों का ट्रैक रखें।

स्पष्टीकरण
  • -vt = 10 थ्रेशोल्ड प्रदान करें।
  • {सूची [$ 1]} सभी संभव पहले फ़ील्ड पर नज़र रखने का ट्रैक रखें।
  • $ 2 & lt; t {count [$ 1] ++} यदि दूसरा क्षेत्र सीमा से छोटा है, काउंटर बढ़ाना।
  • END {के लिए (i सूची) प्रिंट मैं, गिनती [i] + 0} अंत में, सभी प्रथम क्षेत्रों के माध्यम से लूप और प्रिंट की सीमा से कम मूल्य की संख्या को प्रिंट कर सकते हैं। गिनती [i] +0 चाल प्रिंट करता है 0 यदि मान सेट नहीं है।

    टेस्ट < (I) सूची में प्रिंट के लिए, [i] +0} एए गिनती करें> $ awk -vt = 10 '{list [$ 1]} $ 2 & lt; count {count [$ 1] ++} 2 बी 0

Comments

Popular posts from this blog

java - ImportError: No module named py4j.java_gateway -

python - Receiving "KeyError" after decoding json result from url -

.net - Creating a new Queue Manager and Queue in Websphere MQ (using C#) -