Sed -i '1d' क्या करता है?


28

मैं समझता हूं कि sedटेक्स्ट फाइल में हेरफेर करने के लिए यह एक कमांड है।

मेरे Googling से, ऐसा लगता -iहै कि फ़ाइल पर ही ऑपरेशन करना है, क्या यह सही है?

किस बारे में '1d'?

जवाबों:


43

इन sed:

  • -i विकल्प इनपुट फ़ाइल को जगह में संपादित करेगा

  • '1d' इनपुट फ़ाइल की पहली पंक्ति को हटा देगा

उदाहरण:

% cat file.txt 
foo
bar

% sed -i '1d' file.txt 

% cat file.txt        
bar

ध्यान दें, -iविकल्प का उपयोग करते समय बैकअप लेने के लिए अधिकांश समय यह एक अच्छा विचार है ताकि आपके पास किसी भी अप्रत्याशित परिवर्तन के मामले में मूल फ़ाइल बैकअप हो।

उदाहरण के लिए, यदि आप करते हैं:

sed -i.orig '1d' file.txt 

मूल फ़ाइल को रखा जाएगा file.txt.origऔर संशोधित फ़ाइल होगी file.txt


4
आप यह भी देख सकते -iहैं कि पहले क्या होता है "ड्राई रन" , फिर -iफाइल को बदलने के लिए उपयोग करें।
बार्ड कोपरपुड

15

1. क)

sed '1d' file.txt

की सामग्री प्रिंट file.txt; पहली पंक्ति को छोड़कर; मानक उत्पादन के लिए।


2. क)

sed -i    '1d' file.txt # GNU, NetBSD, OpenBSD
sed -i '' '1d' file.txt # FreeBSD, macOS

की सामग्री प्रिंट file.txt; पहली पंक्ति को छोड़कर; में वापस file.txt; मूल लेखन।


2. बी)

sed -i.back '1d' file.txt

file.txt.backपरिवर्तन करने से पहले मूल (अ.स.) का बैकअप बनाता है । FreeBSD को छोड़कर sed, प्रत्यय (यहाँ .back) -iविकल्प से जुड़ा होना चाहिए (एक ही तर्क में, बीच में कोई स्थान नहीं -iऔर .back)।


3. क)

sed '2d' file.txt

की सामग्री प्रिंट file.txt; दूसरी पंक्ति को छोड़कर; मानक उत्पादन के लिए।
(किसी भी संख्या को निर्दिष्ट करने से संबंधित लाइन हट जाएगी)।

-iध्वज के साथ भी संगत ।


3. बी)

sed '1!d' file.txt

की सामग्री प्रिंट file.txt; सभी को छोड़कर, लेकिन पहली पंक्ति; मानक उत्पादन के लिए।
(दूसरे शब्दों में, केवल पहली पंक्ति मुद्रित होती है)।

-iध्वज के साथ भी संगत ।


3. सी)

sed '$d' file.txt

की सामग्री प्रिंट file.txt; अंतिम पंक्ति को छोड़कर; मानक उत्पादन के लिए।

-iध्वज के साथ भी संगत ।


FYI करें: BSD संस्करण (यानी macOS de facto standard) आमतौर पर तब तक सहयोग नहीं करेगा जब तक आप एक बैकअप (2. b) नहीं बनाते हैं , या बैकअप बायपास विधि (2. c) का उपयोग नहीं करते हैं । GNU संस्करण आपको इसके लिए संकेत नहीं देगा। यह विनाशकारी रूप से संपादित करेगा, और बिना किसी हिचकिचाहट के मौजूदा फ़ाइलों को अधिलेखित करेगा।
आवाज

4

में sed -hहै:

  -i[SUFFIX], --in-place[=SUFFIX]
             edit files in place (makes backup if SUFFIX supplied)

और 'फ़ाइल पर ही ऑपरेशन करें।' यह पूरी तरह से।

और manकहा: 'सैड एक धारा संपादक है। एक स्ट्रीम एडिटर का उपयोग इनपुट स्ट्रीम (एक पाइपलाइन से एक फ़ाइल या इनपुट) पर बुनियादी पाठ परिवर्तन करने के लिए किया जाता है। '

आपके प्रश्न के रूप में,

sed -i '1d' file_name

का अर्थ है: जगह पर फ़ाइल में पहली पंक्ति को हटाने"file_name" और फ़ाइल के लिए बैकअप। (फ़ाइल को संपादित करने और सीधे पहली पंक्ति को हटाने की तरह।)

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