bash - অবৈধ কমান্ড কোড।, sed escaping সত্ত্বেও, sed ব্যবহার করে




macos (2)

বর্তমান ক্লায়েন্টের জন্য CVS ব্যবহার করা বাধ্য করা এবং রিমোট রেপোর জন্য ঠিকানা পরিবর্তন করা হয়েছে। আমার স্থানীয় কোডে রিমোট ঠিকানা পরিবর্তন করার একমাত্র উপায় একটি পুনরাবৃত্তিমূলক অনুসন্ধান এবং প্রতিস্থাপন।

যাইহোক, sed কমান্ডের সাথে আমি কাজ করতে চাই:

find ./ -type f -exec sed -i "s/192.168.20.1/new.domain.com/" {} \;

আমি প্রতিটি ফাইলের জন্য একটি ত্রুটি পেতে:

sed: 1: ".//file/path ...": invalid command code .

আমি sed ম্যাচ / প্রতিস্থাপন সময়কাল এড়াতে চেষ্টা করেছি কিন্তু যে কোন সমাধান না।


আপনি কেবল -i থেকে একটি যুক্তি সরবরাহ করতে ভুলে গেছেন। শুধু পরিবর্তন -i থেকে -i ''

অবশ্যই আপনি আপনার ফাইল ব্যাক আপ করতে চান না মানে; অন্যথায় আপনার পছন্দসই এক্সটেনশন সরবরাহ করুন, যেমন -i .bak


যদি আপনি একটি ওএস এক্স এ থাকেন, তাহলে সম্ভবত এটি sd কমান্ডের সাথে কিছু করার নেই। Sed এর OSX সংস্করণে, -i বিকল্পটি একটি extension আর্গুমেন্টের প্রত্যাশা করে যাতে আপনার কমান্ড আসলে extension যুক্তি হিসাবে পার্স করা হয় এবং ফাইল পাথটি কমান্ড কোড হিসাবে ব্যাখ্যা করা হয়।

-e যুক্তিটি স্পষ্টভাবে যুক্ত করার চেষ্টা করুন এবং '' -i '' যুক্তি হিসাবে প্রদান করুন:

find ./ -type f -exec sed -i '' -e "s/192.168.20.1/new.domain.com/" {} \;

this দেখুন।







sed