awk - Picking out elements not in an 1-D array? -


मेरे पास 1-डी सरणी है

x1 = [1, 2, 3, ..., 10]

जो फ़ाइल x1.dat में एक रिकार्ड (सभी एक पंक्ति पर) के रूप में संग्रहीत है, जो कॉमा से अलग है। x1.dat पढ़ता है

1,2,3,4,5, ..., 10

और वहां हैं दो सरणियों

array1 = [1,3] , और array2 = [4,7]

(तत्वों में < कोड> सरणी 1 और array2 सरणी के कुछ तत्व x1 ) हैं।

मैं सभी तत्व का चयन करना चाहता हूं जो न तो है सरणी 1 और सरणी 2 में नहीं वांछित आउटपुट पढ़ा जाएगा

2,5,6,8,9,10

मैंने awk के साथ कोशिश की:

< कोड> $ awk 'BEGIN {array1 = (1,3); Array2 = (4,7)} {for (i = 1; i & lt; = nf; i ++) अगर ((($ i में a1)) & amp; amp; amp; & amp; amp; (! ($ I में a2))) {प्रिंट $ I}} 'x1.dat

यह काम नहीं करता है क्या आप कृपया मुझे इसे सही करने या इस चयन का बेहतर तरीका देकर सहायता कर सकते हैं?

आपने अपनी डेटा फ़ाइल का पाठ स्वरूप नहीं दिया है। मुझे लगता है कि यह प्रति पंक्ति एक तत्व है।

आपके कोड में आपके पास कुछ समस्याएं हैं I

  • चर असाइनमेंट, आप उस तरह एक ओक एआरआई नहीं आवंटित कर सकते हैं।
  • में उपयोग सरणी (वास्तव में हैशटेबल) कुंजी की जाँच कर रहा है मान।

यदि आप array1 और 2 को फ़ाइल में या 2 को डालते हैं, तो इनपुट कोड में नहीं, बल्कि मैं इसे वहां दिखा रहा हूं कि समस्या को हल करने के तरीके के रूप में ठीक से आपने वर्णन किया है

बेहतर संस्करण पढ़ें:

  awk -v arr1 = "& lt; yourArray1Str & gt;" -वी arr2 = "& lt; yourArray2Str & gt;" 'BEGIN {विभाजित (arr1, a, ","); विभाजन (arr2, ख, ""); के लिए (एक्स में ए) के [एक [x]] = 1; के लिए (एक्स में बी) कश्मीर [बी [x]] = 1}! कश्मीर [$ 0] 'फ़ाइल  

अपने उदाहरण के साथ:

  $ kent बिल्ली 1 2 3 4 5 केंट $ अक्साक-वी एआर 1 = "2,4,3" -वी arr2 = "1,3,4" 'BEGIN {विभाजन (एरो 1, ए, ","); विभाजित (एआर 2, के लिए (एक्स में) कश्मीर [एक [x]] = 1; के लिए (एक्स में बी) कश्मीर [बी [x]] = 1}! कश्मीर [$ 0] 'एफ 5  

Comments

Popular posts from this blog

import - Python ImportError: No module named wmi -

Editing Python Class in Shell and SQLAlchemy -

lua - HowTo create a fuel bar -