रिक्त स्थानों को हटाने के लिए सैड


28

क्या किसी को पता है कि किसी पाठ फ़ाइल में सभी रिक्त स्थानों को हटाने के लिए सिड का उपयोग कैसे करें? मैं ऐसा करने के लिए "d" डिलीट कमांड का उपयोग करने की कोशिश कर रहा हूं, लेकिन यह पता नहीं लगा सकता

जवाबों:


35

"अंतरिक्ष" किस तरह का?

"सभी रिक्त स्थानों को हटाने के लिए" का अर्थ विभिन्न चीजों में से एक हो सकता है:

  1. अंतरिक्ष वर्ण की सभी घटनाओं को हटाएं, कोड 0x20
  2. क्षैतिज टैब वर्ण, " \t" सहित सभी क्षैतिज स्थान हटाएं
  3. सभी व्हाट्सएप को हटाएं, जिसमें न्यूलाइन, " \n" और अन्य शामिल हैं

नौकरी के लिए सही उपकरण

यदि sedयह किसी छिपे हुए कारण की आवश्यकता नहीं है, तो बेहतर काम के लिए सही उपकरण का उपयोग करें।

आदेश trका अनुवाद करने में मुख्य उपयोग होता है (इसलिए "tr" नाम) वर्णों की सूची अन्य पात्रों की सूची में है। एक कोने के मामले के रूप में, यह पात्रों की खाली सूची में अनुवाद कर सकता है; विकल्प -d( --delete) सूची में दिखाई देने वाले वर्णों को हटा देगा।

वर्णों की सूची [:...:]वाक्य रचना में वर्ण वर्गों का उपयोग कर सकती है ।

  1. tr -d ' ' < input.txt > no-spaces.txt
  2. tr -d '[:blank:]' < input.txt > no-spaces.txt
  3. tr -d '[:space:]' < input.txt > no-spaces.txt

जब जिद की sed

Sed के साथ, [:...:]वर्ण वर्गों के लिए सिंटैक्स को regexps में वर्ण सेट के लिए सिंटैक्स के साथ संयोजित करने की आवश्यकता होती है [...], जिसके परिणामस्वरूप कुछ हद तक होता है [[:...:]]:

  1. sed 's/ //g' input.txt > no-spaces.txt
  2. sed 's/[[:blank:]]//g' input.txt > no-spaces.txt
  3. sed 's/[[:space:]]//g' input.txt > no-spaces.txt

1
+1, रिक्त स्थान के लिए POSIX संकेतन जाने का उपयुक्त तरीका है।
अविनाश राज

1
इस कार्य के लिए tr का उपयोग करने के लिए महान संकेत, महान काम करता है। केवल एक चीज जो मुझे समायोजित करनी थी, वह यह थी कि स्टड से इनपुट पढ़ता है, इसलिए मेरे लिए क्या काम किया गया था tr -d ' ' < input.txt > no-spaces.txt
आकाश

@ स्काई की टिप्पणी मेरे मैकओएस (लिनक्स में परीक्षण नहीं) में काम करती है। शायद जवाब अपडेट होना चाहिए?
iplus26

बहुत बहुत धन्यवाद @ धन्यवाद, यह वास्तव में एक गलत त्रुटि है। मैं trअब के साथ तीन लाइनों को ठीक कर दूँगा । (क्या आप इसे कहीं और देखते हैं?)
वोल्कर सेगेल

7

आप इसका उपयोग सभी व्हाट्सएप को हटाने के लिए कर सकते हैं file:

 sed -i "s/ //g" file

2
कोई पाँसा नहीं। मैंने भी इसी तरह की कोशिश की है। काम नहीं करता
जस्टिन

क्या आप व्हॉट्सएप या टैब हटाना चाहते हैं?
सायरस

1
व्हॉट्सएप हटाएं
जस्टिन

2
एक सरल परीक्षण:man sed | sed "s/ //g"
साइरस

1
@starscream_disco_party: यह समान है। आप सभी 3 /को एक अलग चरित्र के साथ बदल सकते हैं , जैसे:sed "ss ssg"
साइरस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.