पाठ फ़ाइल से उस पंक्ति को हटाते समय, इनपुट टेक्स्ट फ़ाइल की पहली पंक्ति कैसे प्राप्त करें


11

टेक्स्ट फ़ाइल से उस लाइन को हटाने के दौरान मैं इनपुट टेक्स्ट फ़ाइल की पहली पंक्ति कैसे प्राप्त कर सकता हूं?

अगर मेरे पास /myPathToTheFile.txtइस तरह से एक टेक्स्ट फाइल थी

► put returns between paragraphs
► for linebreak add 2 spaces at end
► _italic_ or **bold**

मैं एक आउटपुट के रूप में इस लाइन को प्राप्त करना चाहता हूं

► put returns between paragraphs

और मेरी पाठ फ़ाइल अब इस तरह होनी चाहिए

► for linebreak add 2 spaces at end
► _italic_ or **bold*

ध्यान दें कि इस ऑपरेशन की लागत फ़ाइल के आकार के लिए आनुपातिक है। इसलिए यदि फ़ाइल बड़ी है और आप अक्सर ऐसा करते हैं, तो यह बहुत धीमी हो जाएगी।
कोडइन्चोस

जवाबों:


13
ex -s /myPathToTheFile.txt <<\EX
1p
1d
wq
EX

या

ex -s /myPathToTheFile.txt <<< 1p$'\n'1d$'\n'wq

या, कम टाइपिंग:

ed -s /myPathToTheFile.txt <<< $'1\nd\nwq'

वाह, एड का अच्छा उपयोग ...!
क्यूर

10

कम से कम GNU sed के साथ:

$ cat file
► put returns between paragraphs
► for linebreak add 2 spaces at end
► _italic_ or **bold**

$ sed -i '1{
w /dev/stdout
d}' file
► put returns between paragraphs

$ cat file
► for linebreak add 2 spaces at end
► _italic_ or **bold**

GNU sed के साथ इसे वन-लाइनर के रूप में लिखा जा सकता है

sed -i -e '1 {w /dev/stdout' -e 'd}' file

6

मान लें कि आप एक शेल स्क्रिप्ट के लिए पूछ रहे हैं, यह वही करेगा जो आपने अनुरोध किया था:

NAME=$1
head -n 1 $NAME
sed -i '1d' $NAME


2

आप उपयोग कर सकते हैं head, tailऔर mv:

पहली पंक्ति प्रदर्शित करें:

head -1 myPathToTheFile.txt

अंतिम ( +2) लाइनें रखना :

tail -n +2 myPathToTheFile.txt > file.tmp && mv file.tmp myPathToTheFile.txt

1

फ़ाइल डिस्क्रिप्टर और थोड़ा सा का उपयोग करना python

{
    { 
    head -n1 >&3; 
    3>&- tail -n +1;
    3>&- python -c 'import sys; sys.stdout.truncate(sys.stdout.tell())';
    }<file 1<>file
} 3>&1

1

सिर और पूंछ का उपयोग करना। फ़ाइल target.txt है

head -1 target.txt && tail -n+2 target.txt > tmp
mv tmp target.txt && rm tmp

नोट: सुनिश्चित करें कि वर्तमान फ़ोल्डर में कोई मौजूदा फ़ाइल tmp नहीं है, अन्यथा इसे हटा दिया जाएगा।

स्पष्टीकरण:

  • "हेड -1" पहली पंक्ति का चयन करता है
  • "tail -n + 2 target.txt> tmp" 2 पंक्तियों से आगे (सहित) सभी लाइनों का चयन करता है और उन्हें tmp में डालता है
  • mv tmp के साथ मूल फ़ाइल को अधिलेखित करता है
  • rm tmp इस प्रकार बनाई गई tmp फाइल को हटा देगा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.