unix - recoding of a huge file -


मेरे पास एक बड़ी फ़ाइल है जिसमें निम्न प्रारूप है:

  #pair: 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 # पेयर : 1 2 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 # 1: 1 2 1 2 0 0 1   

इत्यादि आदि मुझे आशा है कि मैं लिनक्स में कमांड का उपयोग कर सकता हूं, प्रत्येक लाइन को "# पेअर" से शुरू होता है और इसे पिछले 3 कॉलम सीधे इस लाइन को सहारा देते हैं। उदाहरण के लिए:

  # पेअर: 1 2 1 2 0 0 1   

में परिवर्तन: < पूर्व> # पेअर: 1 2 1 2 0 0 1

बहुत पहले धन्यवाद!

Awk के साथ आसान है:

  awk '/ ^ # pair: / {$ 6 = "\ n" $ 6} 1 'फ़ाइल & gt; नयाफ़ाइल   

यह मानता है कि फ़ील्ड गिनती स्थिर है, और # पेयर के अंत में यह सफेद स्थान है: लाइन सहनीय है इन दोनों धारणाओं को ठीक करने या आसपास काम करने के लिए मामूली आसान है, लेकिन कोड पठनीयता की कीमत पर। (फ़ील्ड गिनती बदल सकती है, लेकिन आप हमेशा पिछले तीन को बदल सकते हैं, तो $ (NF-2) की तरह $ 6 की तरह कुछ का उपयोग करें। एक सरल उप जोड़ें ( ) यदि जरूरी हुआ तो रिक्त स्थान को छूने के लिए।)

रिजक्स लाइनों से मेल खाता है जो कि #pair: से शुरू होता है और कार्रवाई छठे क्षेत्र से पहले एक नई लाइन को शुरू करने के लिए कहती है।

अकेले 1 मानक आउटपुट के लिए हर इनपुट लाइन को मुद्रित करने के लिए एक अजीब मुहावरा है।

यह फ़ाइल पढ़ता है और उसे स्थान देता है आउटपुट newfile

Comments

Popular posts from this blog

sql - Postgresql record to array -

c++ - Cmake produces file extensions in static library archives -

Pygame memory leak with transform.flip -