टेक्स्टलाइन में नई जगह के साथ रिक्त स्थान कैसे बदलें / दर्ज करें?


18

मेरे पास "उदाहरण" नाम की सरल पाठ फ़ाइल है।

टर्मिनल कमांड के साथ पढ़ना: cat example

आउटपुट:

abc cdef ghi jk lmnopq rst uv wxyz

मैं निम्नलिखित रूप में परिवर्तित करना (बदलना) चाहता हूं : (अपेक्षित आउटपुट cat example)

abc
cdef
ghi
jk
lmnopq
rst
uv
wxyz

मैं कमांड-लाइन के माध्यम से यह कैसे कर सकता हूं?

(यह केवल एक उदाहरण फ़ाइल है, मैं वर्टिकल-कॉलम में शब्द की स्थिति बदलना चाहता हूं )


जवाबों:


37

कुछ विकल्प:

  1. क्लासिक, उपयोग tr:

    tr ' ' '\n' < example
    
  2. उपयोग cut

    cut -d ' ' --output-delimiter=$'\n' -f 1- example
    
  3. उपयोग sed

    sed 's/ /\n/g' example
    
  4. उपयोग perl

    perl -pe 's/ /\n/g' example
    
  5. खोल का उपयोग करें

    foo=$(cat example); echo -e ${foo// /\\n}
    

उदाहरण के sedलिए मुझे $वास्तविक न्यूलाइन के स्थान पर बैश पाने के लिए a जोड़ने की आवश्यकता थी :sed $'s/ /\\\n/g' example
acumartini

उदाहरण के लिए OSX sed के लिए, gnu-sed के लिए:sed $'s/ /\\n/g'
acumartini

16

नीचे दिए गए आदेश का प्रयास करें

awk -v RS=" " '{print}' file

या

awk -v RS='[\n ]' '{print}' file

उदाहरण:

$ awk -v RS=" " '{print}' example
abc
cdef
ghi
jk
lmnopq
rst
uv
wxyz

स्पष्टीकरण:

आरएस (रिकॉर्ड सेपरेटर) एक अंतर्निहित जागृत चर है। पहले कमांड में, रिकॉर्ड सेपरेटर वैरिएबल को दिया गया मान स्पेस है। जब भी कोई स्थान मिलता है तो awk लाइन को प्रिंटिंग से तोड़ देता है।

दूसरे कमांड में, आरएस वेरिएबल को दिया गया मान स्पेस या नई लाइन कैरेक्टर है। यह कमांड पहले कमांड को रन करते समय दिखाई देने वाली अतिरिक्त ब्लैंक लाइन को खत्म कर देता है।


8

आप उपयोग कर सकते हैं xargs,

cat example | xargs -n 1

या और अच्छा

xargs -n 1 < example

6
xargs -n 1 < exampleआपको 1 बिल्ली का बच्चा बचाता है
रिनजविंड

2

perlऑनलाइनर का उपयोग करना :

perl -p -i -e 's/\s/\n/g' example

यह रिक्त स्थान और टैब को "ENTER" (उर्फ \n) से बदल देगा


1

किसी ने अजगर को पोस्ट नहीं किया, इसलिए यहां है:

python -c "import sys;lines=['\n'.join(l.strip().split()) for l in sys.stdin.readlines()];print('\n'.join(lines))" < input.txt 

हम इनपुट फ़ाइल को python'stdin स्ट्रीम' में रीडायरेक्ट करते हैं , और इसे लाइन द्वारा लाइन में पढ़ते हैं। प्रत्येक पंक्ति को उसकी अनुगामी न्यूलाइन से छीन लिया जाता है, शब्दों में विभाजित कर दिया जाता है, और फिर एक स्ट्रिंग में फिर से जोड़ दिया जाता है, जहां प्रत्येक शब्द को न्यूलाइन द्वारा अलग किया जाता है। यह प्रत्येक पंक्ति में एक शब्द सुनिश्चित करने और कई न्यूलाइन्स से बचने के लिए किया जाता है जब मामले में कई रिक्त स्थान होते हैं। एक दूसरे। आखिरकार हम स्ट्रिंग्स की सूची के साथ समाप्त होते हैं, जो तब फिर से बड़े स्ट्रिंग में शामिल हो जाता है, और स्टडआउट स्ट्रीम के लिए मुद्रित होता है। जिसे बाद में पुनर्निर्देशन के साथ किसी अन्य फ़ाइल पर > out.txt पुनर्निर्देशित किया जा सकता है ।


0

ऊपर 'tr' के समान लेकिन परिवर्धन के साथ:

  • टैब के लिए भी काम करता है

  • कई स्थानों या टैब को 1 नई रेखा में परिवर्तित करता है

    tr -s '[:space:]' '\n' < example
    
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.