সেড দিয়ে প্যাটার্নের সাথে ফাইলের লাইনটি কীভাবে প্রতিস্থাপন করবেন?


28

আমি সেডে প্রচুর ডকুমেন্টেশন পড়ছি এবং আমার বিশেষ ব্যবহারের ক্ষেত্রে এখনও স্টাম্পড করছি।

আমি এই লাইনটি আমার নিজের লাইনের সাথে একটি কনফিড ফাইলটিতে প্রতিস্থাপন করতে চাই:

এই লাইনটি প্রতিস্থাপন করুন:

# ম্যাক্সেমোমরি <বিটেস>
সঙ্গে:
ম্যাক্সেমুরি 26 জিবি b

এটি আমি চেষ্টা করেছি:

সেড এস / ম্যাক্সেমোমরি। * বাইটস।

আমি ত্রুটি পেয়েছি:

সেড: -e এক্সপ্রেশন # 1, চর 30: নিরবচ্ছিন্ন command s 'কমান্ড

কোনটি আমাকে স্ট্যাম্প করে কারণ আমি এর অর্থ জানি না। সুতরাং আমার প্রশ্নটি হ'ল:

আমি যা চাই তা কীভাবে সম্পাদন করতে পারি? ত্রুটিটির অর্থ কী? (তাই আমি এটি থেকে শিখতে পারি)

উত্তর:


29

তুমি ভুলে গেছি -i। পরিবর্তন জায়গায় করা উচিত:

$ sed -i 's/maxmemory.*/maxmemory 26gb/' /some/file/some/where.txt


এবং যদি আপনি আপনার স্ট্রিং মধ্যে স্ল্যাশ আছে, আপনি অন্য বিভেদক অক্ষর পরিবর্তে ব্যবহার করা আবশ্যক /, যেমন @বা |। এখানে দেখুন: stackoverflow.com/a/9366940/4561887 এবং এখানে: unix.stackexchange.com/a/259087/114401
গ্যাব্রিয়েল স্টেপলস

11

প্রকৃতপক্ষে

ত্রুটির অর্থ হ'ল উদ্ধৃতিগুলির অনুপস্থিতিতে, আপনার শেলটি পৃথক যুক্তি ছড়িয়ে দেওয়ার জন্য স্পেস ব্যবহার করে। মধ্যে স্থান maxmemoryএবং 26gbএইভাবে প্রথম যুক্তি, যা এইভাবে একটি টার্মিনাল অভাব আছে সসীম হিসাবে বিবেচনা করা হয় /যখন sedতার কমান্ড এক হিসাবে যে যুক্তি বিশ্লেষণ করতে আসে।

আপনার রেগেক্সকে একক উদ্ধৃতিগুলির মধ্যে রেখে দেওয়া যাতে আপনার শেল এটিকে একাধিক যুক্তিতে বিভক্ত না করে এবং এটি sedএকক যুক্তি হিসাবে দেয় না , সমস্যাটি সমাধান করে:

$ sed s/maxmemory.*/maxmemory 26gb/ /some/file/some/where.txt
sed: -e expression n°1, caractère 23: commande `s' inachevée

যখন

$ sed 's/maxmemory.*/maxmemory 26gb/' /some/file/some/where.txt

কাজ করে।

আশা করি এইটি কাজ করবে.


1
এটি sedযে এটি করে না । এটি শেল যে এটি করে।
JdeBP

আপনি ঠিক বলেছেন, অবশ্যই মাথা উঁচু করার জন্য ধন্যবাদ :)
সিক্সিল্ডারিক

3

আপনার ব্যবহারের কেসটি এই আদেশ দ্বারা সমাধান করা হবে।

sed -i -e 's/#maxmemory.*/maxmemory 26gb/g' /etc/redis/redis.conf

5
হতে পারে আপনি একটি ছোট ব্যাখ্যা যুক্ত করতে চান।
ডেভিডবাউমান

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