একটি একক টার্মিনাল কমান্ড ব্যবহার করে একটি পাঠ্য ফাইলে শব্দ যুক্ত করুন (কোনও সম্পাদক নেই)


22

আমি লিনাক্সে নতুন আমাকে .confকেবল ওপেন টার্মিনাল থেকে একটি ফাইল সম্পাদনা করতে হবে এবং কোনও পাঠ্য সম্পাদক ব্যবহার করার প্রয়োজন নেই। অর্থাৎ, আমি কি একটি ওপেন টার্মিনাল থেকে কোনও কনফিগার ফাইলে শব্দ এবং বাক্য যুক্ত করতে পারি?

উদাহরণ: command /home/.../file.conf -add 'abcd'২৩ তম লাইনে। এবং অবশেষে, এটি সংরক্ষণ করুন।

কেবলমাত্র কমান্ডটি ব্যবহার করে word কনফিগারেশনের ফাইলটিতে একটি নির্দিষ্ট শব্দ অনুসন্ধান করা এবং সেই কনফিগারেশনের পরবর্তী লাইনে নতুন পাঠ্য যুক্ত করা সম্ভব?


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 এর চেয়ে বেশি শব্দ যুক্ত করতে হবে to কোন সহজ উপায় আছে?
ব্যবহারকারী 259060

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

নিম্নলিখিত অনুসন্ধান প্যাটার্ন পরে একটি লাইন যুক্ত।

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

এটি অনুসন্ধানের প্যাটার্ন সহ প্রতিটি লাইনের নীচে একটি নতুন লাইন সন্নিবেশ করায়।

দুটি লাইন যুক্ত করতে, আপনি একটি ব্যবহার করতে পারেন \এবং নতুন পাঠ্য টাইপ করার সময় একটি নতুন লাইন প্রবেশ করতে পারেন ।

 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

মন্তব্য:

  • রেজেক্স হ'ল একটি নিয়মিত অভিব্যক্তি (যা রেজেক্স নামেও পরিচিত) এটি অনুসন্ধানের মানদণ্ডকে সংজ্ঞায়িত করে। নিয়মিত প্রকাশগুলি খুব কাস্টমাইজযোগ্য অনুসন্ধানগুলির জন্য অনুমতি দেয় এবং অ্যাডাব্লু দ্বারা বোঝা সিনট্যাক্সটি ম্যানুয়ালটিতে থাকে । সহজতম ক্ষেত্রে - একটি অক্ষর "যেমন রয়েছে" তে অক্ষর অনুসারে অনুসন্ধান করুন - কেবল বিশেষ অক্ষরের আগে একটি ব্যাকস্ল্যাশ রাখুন (বিশেষ অক্ষরের তালিকার জন্য ম্যানুয়াল দেখুন)

কিভাবে এটা কাজ করে:

  • inputfileইনপুট লাইনগুলি পড়ার জন্য খুলুন , সাফ করুন outputfileএবং আউটপুট লাইনগুলি লেখার জন্য এটি খুলুন
  • প্রতিটি লাইনের জন্য, বন্ধনীগুলিতে ব্লকটি চালান:
    • যদি লাইনটি নিয়মিত অভিব্যক্তির সাথে মিলে যায়, তবে লিখিত সামগ্রী যুক্ত লাইনটিকে আউটপুট করুন
    • অন্যথায়, খুব একই লাইন আউটপুট।

0

edকমান্ডটি ব্যবহার করে আমি আমার নিজের প্রশ্নের সমাধান পেয়েছি

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

পাঠ্যে 27 টি লাইন থাকতে পারে। আপনি একটি পাঠ্য ফাইল থেকে 27 টি লাইন অনুলিপি করতে পারেন এবং আপনার কনফিগার ফাইলে 27 টি লাইন আটকান। তবে edএকই কনফিগার ফাইলে আরও পাঠ্য যুক্ত করতে আমার একসাথে কমান্ডটি চালানো দরকার ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.