আক্ষরিক স্ট্রিং সহ সেড - ইনপুট ফাইল নয়


97

এটি সহজ হওয়া উচিত: আমি কোনও ইনপুট ফাইল নয়, আক্ষরিক স্ট্রিংয়ের বিরুদ্ধে সেড চালাতে চাই । যদি আপনি ভেবে থাকেন তবে কেন এটি হ'ল উদাহরণস্বরূপ ভেরিয়েবলগুলিতে সঞ্চিত মানগুলি সম্পাদনা করুন, পাঠ্য ডেটা অগত্যা নয়।

যখন আমি করি:

sed 's/,/','/g' "A,B,C"

যেখানে A, B, C হ'ল আক্ষরিক যা আমি এ ',' বি ',' সিতে পরিবর্তন করতে চাই

আমি পাই

Can't open A,B,C

যেন এটি এ, বি, সি একটি ফাইল মনে করে।

প্রতিধ্বনিত করার জন্য আমি এটি পাইপ করার চেষ্টা করেছি:

echo "A,B,C" | sed 's/,/','/g' 

আমি একটি প্রম্পট পেতে।

এটি করার সঠিক উপায় কী?

উত্তর:


152

আপনার একক কোট বিরোধ রয়েছে, তাই ব্যবহার করুন:

 echo "A,B,C" | sed "s/,/','/g"

যদি ব্যবহার করা হয় , আপনি খুব করতে পারেন ( <<<এটি একটি here-string):

sed "s/,/','/g" <<< "A,B,C"

কিন্তু না

sed "s/,/','/g"  "A,B,C"

কারণ sedআর্গুমেন্ট হিসাবে ফাইল (গুলি) আশা

সম্পাদনা :

আপনি যদি ব্যবহার বা অন্য যে কোনও:

echo string | sed ...

4
অদ্ভুত, আমার জন্য কাজ করে না ... কিছুক্ষণ আগে বুঝতে পেরেছিলাম যে এটি পোস্ট করা হয়েছিল, তবে যদি সমস্যা হয় তবে অদ্ভুত অবমূল্যায়ন
সুপারহিরো


5

ব্যাশ স্ক্রিপ্টে ভেরিয়েবলগুলি ব্যবহার করে আমার সংস্করণ:

যে কোনও ব্যাকস্ল্যাশগুলি সন্ধান করুন এবং ফরোয়ার্ড স্ল্যাশগুলির সাথে প্রতিস্থাপন করুন:

input="This has a backslash \\"

output=$(echo "$input" | sed 's,\\,/,g')

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