উত্তর:
আপনি এটি করতে ব্যবহার করতে পারেন sed
:
sed -i.bak 's/^/##/' file
এটি লাইন ( ^
) এর শুরুতে প্রতিস্থাপন করে ##
।
সঙ্গে -i.bak
সুইচ, sed
ইন-জায়গা ফাইল সম্পাদনা কিন্তু এক্সটেনশনের সাথে কোনো ব্যাকআপ অনুলিপি তৈরি করে .bak
।
sed 's/^\(.*\)$/##\1/'
, তবে এটি বেশ সুন্দর।
পার্ল ব্যবহার করে এই সমস্যার সমাধান এখানে দেওয়া হল
perl -e 'while (<>) {print "##$_"}' < infile > outfile
-p
সুইচ এছাড়াও দরকারী হল: perl -pe 's/^/##/' infile > outfile
। (এর রয়েছে -i[extension]
ইন-জায়গা লক্ষ্য ফাইল প্রতিস্থাপন জন্য সুইচ।) Perldoc.perl.org/perlrun.html#%2a-p%2a
যখন আমরা এতে আছি:
gawk -i inplace '{print "##"$0}' infile
এটি GNU awk 4.1.0+ এর জন্য (তুলনামূলকভাবে নতুন) ইনপ্লেস এডিটিং প্লাগইন ব্যবহার করে।
এখানে একটি ব্যাপার bash
উপায়:
while read -r; do printf '##%s\n' "$REPLY"; done < infile > outfile
( ইন bash
শেল , দৌড়ানো read -r
অন্য কোন আর্গুমেন্ট সহ মত কাজ করে IFS= read -r REPLY
।)
এটি স্টাইলিস্টিকভাবে বেভ_35 এর পার্ল সলিউশন দ্বারা অনুপ্রাণিত , যা আমি স্বীকার করি যে বিশাল ফাইলগুলির জন্য সম্ভবত খুব দ্রুত সঞ্চালিত হয়, যেহেতু perl
পাঠ্য প্রক্রিয়াজাতকরণের ক্ষেত্রে এটি শেলের চেয়ে আরও বেশি দক্ষ হবে বলে আশা করা যায়।
আপনি এক্স মোডে ভিম ব্যবহার করতে পারেন:
ex -sc '%s/^/##/|x' file
%
সমস্ত লাইন নির্বাচন করুন
s
বিকল্প
x
সংরক্ষণ করেন এবং বন্ধ করেন
পাইথনের ম্যাপিং ফাংশন এবং স্টিডিন পুনর্নির্দেশের সাহায্যে করা যেতে পারে:
$ cat input.txt
lorem ipsum
quick brown fox
hello world
$ python -c 'import sys;print "".join(map(lambda x: "##"+x,sys.stdin.readlines()))' < input.txt
##lorem ipsum
##quick brown fox
##hello world
নতুন ফাইলে আউটপুট সংরক্ষণ করুন এবং আসল পরিবর্তে এটি ব্যবহার করুন
sed 's/^/##/' -i file
। এই ক্ষেত্রে, এটি পছন্দ করা হবে যেহেতু এটি ভুল হতে পারে না। অন্যান্য ক্ষেত্রে, এই কমান্ডটিdiff -u file.bak file
পার্থক্যগুলি দেখার জন্য একত্রিত করা যেতে পারে (যদি প্রয়োজন হয় তবে এটিটি পাইপ করুনless
)। যদি এটি কাজ করার বিষয়ে নিশ্চিত হয় তবে ব্যাকআপটি সরানো যেতে পারে। অন্যথায় এটি একটি সাধারণ দিয়ে পুনরুদ্ধার করা যেতে পারেmv file.bak file
।