एकल टर्मिनल कमांड (कोई संपादक नहीं) का उपयोग करके किसी पाठ फ़ाइल में शब्द जोड़ें


22

मैं लिनक्स के लिए नया हूँ। मुझे .confकेवल खुले टर्मिनल से एक फ़ाइल को संपादित करने की आवश्यकता है और किसी भी पाठ संपादकों का उपयोग नहीं करना चाहिए। यही है, क्या मैं एक खुले टर्मिनल से एक कॉन्फ़िगर फ़ाइल में शब्द और वाक्य जोड़ सकता हूं?

उदाहरण: command /home/.../file.conf -add 'abcd'23 वीं पंक्ति और इतने पर। और अंत में, इसे बचाएं।

क्या उस कॉन्फिग फ़ाइल में एक विशिष्ट शब्द खोजना संभव है और केवल कमांड का उपयोग करके उस कॉन्फिग फ़ाइल की अगली पंक्ति में नया टेक्स्ट जोड़ना है?


1
लगता sedहै मदद करने के लिए आ सकते हैं।
निशिच

1
एक ही प्रश्न पूछें।
अविनाश राज

जवाबों:


39

मैं आमतौर पर इस तरह से करता हूं जब मैं अपनी स्क्रिप्ट को वही करने के लिए प्रोग्रामिंग कर रहा हूं जो आप पूछ रहे हैं लेकिन प्रोग्रामेटिक रूप से।

echo "Hello you!" >> myfile.txt
echo "this is 2nd line text" >> file.txt
echo "last line!" >> file.txt

देखा! आपको यह मिला। नोट करने के लिए महत्वपूर्ण >>मौजूदा फ़ाइल में नई लाइन जोड़ने का मतलब है कि >बस सब कुछ अधिलेखित करें।


आपके शीघ्र उत्तर के लिए धन्यवाद। लेकिन मुझे अपनी .conf फ़ाइल की क्रमिक रूप से 23 वीं पंक्ति में 3000 से अधिक पासवर्ड जोड़ने की आवश्यकता है। क्या कोई आसान तरीका है?
user259060

20

ओपन टर्मिनल से कॉन्फिग फाइल में शब्दों और वाक्यों को जोड़ने से आसानी से सेड हासिल किया जा सकता है।

sed -i '23iabcd' file.conf

23 पंक्ति में पाठ abcdको फ़ाइल में सम्मिलित करता हैfile.conf

-iफाइल करने के लिए सीधे संशोधन करता है file.conf

यदि आप उपयोग करना चाहते हैं awkतो:

awk -v n=23 -v s="abcd" 'NR == n {print s} {print}' file > file.conf

निम्न SearchPattern के बाद एक पंक्ति जोड़ता है।

sed -i '/SearchPattern/aNew Text' SomeFile.txt

यह प्रत्येक पंक्ति के नीचे नया पाठ एक पंक्ति सम्मिलित करता है जिसमें SearchPattern होता है।

दो पंक्तियों को जोड़ने के लिए, आप एक का उपयोग कर सकते हैं \और नया पाठ लिखते समय एक नई पंक्ति दर्ज कर सकते हैं ।

 sed -i '/pattern/a \
line1 \
line2' inputfile

5

आप printfकमांड का उपयोग भी कर सकते हैं ।

अपनी फ़ाइल में लाइनें जोड़ने के लिए

$ printf "\nThis is a new line to your document" >> file.txt

फ़ाइल को अधिलेखित करने के लिए

$ printf "This overwrites your file" > file.txt

0
awk '{if ($1 ~ /regex/) print $1 "content to be added"; else print $1}' < inputfile > outputfile

टिप्पणियाँ:

  • रेगेक्स एक नियमित अभिव्यक्ति है (जिसे रेगेक्स के रूप में भी जाना जाता है), यह खोज मानदंडों को परिभाषित करता है। नियमित अभिव्यक्ति बहुत अनुकूलन योग्य खोजों के लिए अनुमति देती है और awk द्वारा समझे गए सिंटैक्स मैनुअल में है । सबसे सरल मामले में - एक स्ट्रिंग खोजें "जैसा है", चरित्र द्वारा चरित्र - बस विशेष वर्णों से पहले एक बैकस्लैश डालें (विशेष पात्रों की सूची के लिए मैनुअल देखें)

यह काम किस प्रकार करता है:

  • inputfileइनपुट लाइनों को पढ़ने के लिए खोलें , स्पष्ट करें outputfileऔर इसे आउटपुट लाइनों को लिखने के लिए खोलें
  • प्रत्येक पंक्ति के लिए, ब्रेसिज़ में ब्लॉक चलाएं:
    • यदि रेखा नियमित अभिव्यक्ति से मेल खाती है, तो पंक्तिबद्ध सामग्री के साथ लाइन का उत्पादन करें
    • अन्यथा, बहुत ही लाइन आउटपुट।

0

मुझे edकमांड का उपयोग करके अपने स्वयं के प्रश्न का हल मिला

ed -s /home/.../abc.conf <<< $'23i\ntext\n.\nwq'

पाठ में 27 पंक्तियाँ हो सकती हैं। आप एक टेक्स्ट फ़ाइल से 27 पंक्तियों की प्रतिलिपि बना सकते हैं और अपनी कॉन्फ़िग फ़ाइल में 27 पंक्तियाँ चिपका सकते हैं। लेकिन मुझे edएक ही कॉन्फ़िग फ़ाइल में अधिक टेक्स्ट जोड़ने के लिए कमांड को एक साथ चलाने की आवश्यकता है ।

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