/ / सामग्री के आधार पर कई आउटपुट में विभाजित इनपुट? - बैश, यूनिक्स, शेल, टेक्स्ट

सामग्री के आधार पर एकाधिक आउटपुट में इनपुट विभाजित करें? - बैश, यूनिक्स, खोल, पाठ

मान लें कि एक फ़ाइल है जो इस तरह दिखती है:

xxxx aa whatever
yyyy bb whatever
zzzz aa whatever

मुझे इसमें 2 फ़ाइलों में विभाजित करना पसंद है:

प्रथम:

xxxx aa whatever
zzzz aa whatever

दूसरा:

yyyy bb whatever

अर्थात। मैं पंक्तियों में कुछ मूल्य के आधार पर पंक्तियों को समूहित करना चाहता हूं (नियम यह हो सकता है: रिक्त स्थान द्वारा अलग किया गया 2 शब्द), लेकिन समूहों के भीतर लाइनों को फिर से व्यवस्थित न करें।

बेशक मैं इसे करने के लिए एक कार्यक्रम लिख सकता हूं, लेकिन मैं सोच रहा हूं कि क्या कोई तैयार उपकरण है जो ऐसा कुछ कर सकता है?

क्षमा करें, मैंने इसका उल्लेख नहीं किया, क्योंकि मैंने इसे ग्रहण किया थाबहुत स्पष्ट है - विभिन्न "शब्दों" की संख्या बहुत बड़ी है। हम उनमें से कम से कम 10000 के बारे में बात कर रहे हैं। अर्थात। हाथ से पहले शब्दों की गणना पर आधारित कोई भी समाधान काम नहीं करेगा।

और यह भी - मैं वास्तव में बहु-पास विभाजन की तरह नहीं होगा - प्रश्न में फाइलें आमतौर पर बहुत बड़ी हैं।

उत्तर:

उत्तर № 1 के लिए 6

इससे नाम की फाइलें बन जाएंगी output.aa, output.bb, आदि।:

awk "{print >> "output." $2}" input.file

उत्तर № 2 के लिए 1

ठीक है, तुम एक grep कर सकते हैं कि लाइनों से मेल खाते हैं, और एक grep -v लाइनों है कि "टी मैच" पाने के लिए।

हम्म, आप कर सकते हैं sort -f" " -s -k 2,2, लेकिन वह "ओ" (एन लॉग एन) है।