चूंकि आप अपनी फ़ाइलों को लाइनों की संख्या से अलग करने के लिए "स्प्लिट" का उपयोग कर रहे हैं, तो उन्हें अलग-अलग फ़ाइलों में आउटपुट करने के लिए अलग-अलग प्रोसेस करें (मुझे लगता है), आप कई "awk" कर सकते हैं प्रत्येक प्रोसेसिंग लाइन नंबर के आधार पर आपकी फ़ाइल के केवल एक हिस्से को संसाधित करती है:
$ cut -f3,4,5,6 original.tsv | awk 'BEGIN { FS="\t" }; (NR < 50000){ print $2"\t"$1"\t"$3"\t"$4 }' > abridged01.tsv
$ cut -f3,4,5,6 original.tsv | awk 'BEGIN { FS="\t" }; ((NR >= 50000) && (NR < 100000)){ print $2"\t"$1"\t"$3"\t"$4 }' > abridged02.tsv
$ cut -f3,4,5,6 original.tsv | awk 'BEGIN { FS="\t" }; ((NR >= 100000) && (NR < 150000)){ print $2"\t"$1"\t"$3"\t"$4 }' > abridged03.tsv
NR, "awk" का एक आंतरिक चर है जिसमें वर्तमान लाइन संख्या होती है। प्रत्येक कमांड अपनी सीमा में केवल लाइनों को प्रोसेस करेगा। लेकिन , वे सभी अन्य लाइनों के माध्यम से भी जाएंगे, क्योंकि उन्हें उन्हें गिनने की जरूरत है। मुझे पूरा यकीन है कि यह आपकी मदद नहीं करेगा, क्योंकि आप सबसे अधिक शायद आईओ की अड़चन में पड़ेंगे। लेकिन आपके पास कई प्रक्रियाएँ होंगी, जिससे आप कई सीपीयू का उपयोग कर सकते हैं, यदि आप यही चाहते हैं। ;-)
अब, यदि आपके पास बाइट्स में समान लंबाई वाली सभी लाइनें हैं, तो आप निश्चित रूप से एक वास्तविक समानांतरकरण कर सकते हैं। इस स्थिति में, आप प्रत्येक "awk" प्रक्रिया के लिए सटीक भाग निकालने के लिए "dd" का उपयोग करेंगे। आप कुछ ऐसा ही करेंगे:
dd if=original.tsv bs=30 count=50000 skip=0 | cut -f3,4,5,6 | awk 'BEGIN { FS="\t" }; { print $2"\t"$1"\t"$3"\t"$4 }' > abridged01.tsv
dd if=original.tsv bs=30 count=50000 skip=50000 | cut -f3,4,5,6 | awk 'BEGIN { FS="\t" }; { print $2"\t"$1"\t"$3"\t"$4 }' > abridged02.tsv
dd if=original.tsv bs=30 count=50000 skip=100000 | cut -f3,4,5,6 | awk 'BEGIN { FS="\t" }; { print $2"\t"$1"\t"$3"\t"$4 }' > abridged03.tsv
जहां प्रत्येक पंक्ति में 30 बाइट्स की संख्या है। यदि आपकी लाइनें बाइट्स (जो सबसे अधिक संभावित है) में सभी समान आकार नहीं हैं, लेकिन आप सटीक बाइट को जानते हैं जहां आपकी पंक्तियों का ब्लॉक शुरू और समाप्त होता है, तब भी आप इसे dd का उपयोग करके कर सकते हैं। इसके मापदंडों का अध्ययन करें। अंत में, यदि आप नहीं जानते हैं कि ब्लॉक कहाँ से शुरू होते हैं और समाप्त होते हैं, तो आप उन्हें एक अतिरिक्त awk कमांड के साथ खोज सकते हैं। लेकिन यह आपकी फ़ाइल में एक अतिरिक्त पूर्ण रीड जोड़ता है। जब तक आप अपनी ओरिजिनल .tsv फाइल को कई बार अलग-अलग तरीकों से प्रोसेस नहीं करेंगे, आप निश्चित रूप से ज्यादा समय प्री-प्रोसेसिंग (बाइट्स की गणना करते हुए जहां लाइन ब्लॉक शुरू और खत्म होते हैं) खर्च करेंगे और फिर प्रोसेसिंग (जिसका संभवत: एक छोटा लाभ होगा क्योंकि आप निश्चित रूप से होंगे। यदि आपके द्वारा पहले से ही ज्ञात समाधान का उपयोग किया जाता है, तो IO की अड़चन है)।
किसी भी मामले में, अब आपके पास जानकारी और विकल्प हैं। ;-) सौभाग्य! (Y)