নির্দিষ্ট লাইন নম্বরে পাঠ্য প্রবেশ করান


12

আমি বাশ স্ক্রিপ্টে কাজ করছি যা লাইনের ডাটার উপর নির্ভর করে একটি পাঠ্য নথির বিষয়বস্তুগুলিকে বিভক্ত করবে।

মূল ফাইলের বিষয়বস্তু যদি লাইন বরাবর ছিল

01 line
01 line
02 line
02 line

ফলাফলের জন্য ব্যাশ ব্যবহার করে আমি এই ফাইলটির 3 লাইনটিতে কীভাবে সন্নিবেশ করতে পারি

01 line
01 line
text to insert
02 line
02 line

আমি আমার স্ক্রিপ্টে বংশগত বা অনুরূপ কিছু ব্যবহার করে এটি করার আশা করছি hop

#!/bin/bash

vim -e -s ./file.txt <<- HEREDOC
    :3 | startinsert | "text to insert\n"
    :update
    :quit
HEREDOC

উপরেরটি অবশ্যই কাজ করে না তবে কোনও প্রস্তাবনা যা আমি এই বাশ স্ক্রিপ্টে প্রয়োগ করতে পারি?


উত্তর:


14

আপনি প্রাক্তন মোডে ভিম ব্যবহার করতে পারেন:

ex -s -c '3i|hello world' -c x file.txt
  1. 3 লাইন 3 নির্বাচন করুন

  2. i পাঠ্য এবং নিউলাইন .োকান

  3. x পরিবর্তনগুলি করা হয়েছে (তাদের আছে) লিখে প্রস্থান করুন

অথবা স্ট্রিংয়ের সাথে মিলিয়ে:

ex -s -c '/hello/i|world' -c x file.txt

8

sed একটি traditionalতিহ্যগত পছন্দ হবে (জিএনইউ সেড সম্ভবত এর চেয়ে সহজ ফর্ম রয়েছে)।

$ cat input
01 line
01 line
02 line
02 line
$ sed '2a\
text to insert
' < input
01 line
01 line
text to insert
02 line
02 line
$ 

বা, অত্যন্ত traditional edতিহ্যবাহী হওয়ার কারণে, (বোনাস! আনপোর্টেবল sed -iফর্ম ছাড়াই স্থানের সম্পাদনা )।

$ (echo 2; echo a; echo text to insert; echo .; echo wq) | ed input
32
01 line
47
$ cat input
01 line
01 line
text to insert
02 line
02 line
$ 

(এর সাথে কিছু করার নেই bash।)


2
যোগ করা বোনাক্স echo text to insertদ্বারা প্রতিস্থাপনcat file-to-insert.txt
আর্চেমার 22'16

1
কমপক্ষে বাশ দিয়ে, এই echoprintf '%s\n' 2 a 'text to insert' . wq
সমস্তগুলির

6

যেমন কিছু সম্পর্কে:

head -n 2 ./file.txt > newfile.txt
echo "text to insert" >> newfile.txt
tail -n +3 ./file.txt >> newfile.txt
mv newfile.txt file.txt

1
অদ্ভুত তবে আকর্ষণীয় ধারণা +1
টাই-Ø

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