विशिष्ट कॉलम निकालने और इन्हें दूसरी टेक्स्ट फ़ाइल में पेस्ट करें


0

मेरे पास दो टेक्स्ट फाइलें हैं। मुझे एक पाठ फ़ाइल के कॉलम 5-6-7 की प्रतिलिपि बनाने और इन कॉलमों को किसी अन्य पाठ फ़ाइल में पेस्ट करने की आवश्यकता है। उदाहरण के लिए, पाठ फ़ाइलों का पहला कॉलम निम्नानुसार है;

पाठ_1

E    GPS41  0  5.68026000000000E+08  1.09767623810000E+04 -1.66840300460000E+04  1.77051348440000E+04

पाठ_2

E GPS41 568026000 0.000000000000000E+00 1.097676240456553E+04 -1.668403004627044E+04 1.770513486005421E+04 2.140299562139315E+00 -5.351523203487980E-01 -1.876979500368582E+00 1.714052588162549E-05 1.390618031795355E-05 8.605165964871206E-06 3.266367837880071E-09 3.392831966908295E-09 1.626218351208862E-09

मुझे text_1 के कॉलम 5-6-7 की प्रतिलिपि बनाने और इन्हें निम्नानुसार text_2 में पेस्ट करने की आवश्यकता है;

नया_पाठ

   E GPS41 568026000 0.000000000000000E+00 1.09767623810000E+04 -1.66840300460000E+04  1.77051348440000E+04 2.140299562139315E+00 -5.351523203487980E-01 -1.876979500368582E+00 1.714052588162549E-05 1.390618031795355E-05 8.605165964871206E-06 3.266367837880071E-09 3.392831966908295E-09 1.626218351208862E-09

नोट: यह प्रश्न मेरे पिछले प्रश्न में भिन्न है।


पढ़ेंman cut;man paste
वाल्टिनेटर

जवाबों:


3

यह काम करना चाहिए - बशर्ते आप अपने डेटा में व्हाट्सएप की विशिष्ट मात्रा को संरक्षित करने के बारे में परवाह नहीं करते हैं:

awk '(getline line < "text_1") > -1 {split(line,a); $5 = a[5]; $6 = a[6]; $7 = a[7]} 1' text_2 > new_text

पूर्व। दिया हुआ

$ head text_{1,2}
==> text_1 <==
foo     bar  A B C D E
bar     baz  F G H I J

==> text_2 <==
        foo   bar  a b c d e f g h i j k l m
        bar   baz  f g h i j k l m n o p q r

फिर

$ awk '(getline line < "text_1") > -1 {split(line,a); $5 = a[5]; $6 = a[6]; $7 = a[7]} 1' text_2
foo bar a b C D E f g h i j k l m
bar baz f g H I J k l m n o p q r

उपयोग करने में कठिनाई है cutऔर pasteयह है कि आपकी कम से कम एक फाइल में खेतों को परिसीमित करने वाले व्हाट्सएप की असंगत मात्रा है। आप इसे इनपुट के लिए काम कर सकते हैं जिसे आपने निम्नानुसार पोस्ट किया है:

paste <(cut -d ' ' -f1-4 text_2) \
  <(tr -s '[:blank:]' ' ' < text_1 | cut -d ' ' -f5-7) \
  <(cut -d ' ' -f8- text_2) > new_text

पूर्व।

$ paste <(cut -d ' ' -f1-4 text_2) \
    <(tr -s '[:blank:]' ' ' < text_1 | cut -d ' ' -f5-7) \
    <(cut -d ' ' -f8- text_2) > new_text

$ diff -ws new_text your_new_text 
Files new_text and your_new_text are identical
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.