একটি সেড প্রতিস্থাপন প্যাটার্নের জন্য একটি স্ট্রিং এড়িয়ে চলুন


317

আমার বাশ স্ক্রিপ্টে আমার কাছে একটি বাহ্যিক (ব্যবহারকারীর কাছ থেকে প্রাপ্ত) স্ট্রিং রয়েছে, যা আমার উপাহার পদ্ধতিতে ব্যবহার করা উচিত।

REPLACE="<funny characters here>"
sed "s/KEYWORD/$REPLACE/g"

আমি কীভাবে $REPLACEস্ট্রিংটি এড়াতে পারি যাতে এটি sedআক্ষরিক প্রতিস্থাপন হিসাবে নিরাপদে গৃহীত হবে ?

উল্লেখ্য:KEYWORD কোনো মিল ইত্যাদিতে ব্যবহারকারী দ্বারা সরবরাহ করা হয় একটি মূক সাবস্ট্রিং হয়।


13
তারা যদি "/ জি-এর / পাসওয়ার্ড =" বলে বলে তবে "লিটল ববি টেবিল" সমস্যাটি এড়াতে চাইছেন? * / পাসওয়ার্ড = অ্যাবসি / জি '"?
পল টমবলিন

2
যদি ব্যাশ ব্যবহার করা হয় তবে আপনার সেড লাগবে না। শুধু ব্যবহার করুনoutputvar="${inputvar//"$txt2replace"/"$txt2replacewith"}".
ডেসটেনসন

@ ডিজাইনসন, আমি মনে করি আপনার দুটি উদ্ধৃতি কোটের বাইরে রাখা উচিত নয়। বাশ ডাবল-কোটের ভিতরে ভেরিয়েবলগুলি পড়তে পারে (উদাহরণস্বরূপ, সাদা স্থান স্পেস জিনিসগুলি স্ক্রু করতে পারে)।
ক্যামিলো মার্টিন

2
আরও দেখুন: stackoverflow.com/q/29613304/45375
mklement0

1
@ ক্যামিলোমার্টিন, আমার নিজের উত্তর সম্পর্কে আমার মন্তব্য দেখুন। $ {Inside এর ভিতরে থাকা উদ্ধৃতিগুলি ভিতরে থাকা উক্তিগুলির সাথে মেলে না। দুটি ভেরিয়েবল উদ্ধৃতিগুলির বাইরে নয়
ডেসটেনসন

উত্তর:


268

সতর্কতা : এটি নিউলাইনগুলি বিবেচনা করে না । আরও গভীর-উত্তরের জন্য, পরিবর্তে এই এসও-প্রশ্নটি দেখুন । (ধন্যবাদ, এড মর্টন ও নিক্লাস পিটার)

মনে রাখবেন যে সবকিছু থেকে পালানো একটি খারাপ ধারণা। শেডের বিশেষ অর্থ পেতে বাঁচতে অনেক চরিত্রের প্রয়োজন । উদাহরণস্বরূপ, আপনি যদি প্রতিস্থাপনের স্ট্রিংয়ে একটি অঙ্ক থেকে অব্যাহতি পান তবে এটি একটি পিছনের ক্ষেত্রে সক্রিয় হবে।

বেন ব্ল্যাঙ্ক যেমন বলেছিলেন, প্রতিস্থাপনের স্ট্রিংয়ে কেবল তিনটি অক্ষর এড়ানো দরকার (নিজেরাই পালিয়ে যায়, বিবৃতি শেষে এবং সমস্ত প্রতিস্থাপনের জন্য ফরোয়ার্ড স্ল্যাশ):

ESCAPED_REPLACE=$(echo $REPLACE | sed -e 's/[\/&]/\\&/g')
# Now you can use ESCAPED_REPLACE in the original sed statement
sed "s/KEYWORD/$ESCAPED_REPLACE/g"

আপনার যদি কখনও KEYWORDস্ট্রিং থেকে বাঁচার প্রয়োজন হয় তবে নিম্নলিখিতটি আপনার প্রয়োজন:

sed -e 's/[]\/$*.^[]/\\&/g'

এবং এর দ্বারা ব্যবহার করা যেতে পারে:

KEYWORD="The Keyword You Need";
ESCAPED_KEYWORD=$(echo $KEYWORD | sed -e 's/[]\/$*.^[]/\\&/g');

# Now you can use it inside the original sed statement to replace text
sed "s/$ESCAPED_KEYWORD/$ESCAPED_REPLACE/g"

মনে রাখবেন, আপনি যদি /ডিলিমিটার ব্যতীত অন্য কোনও চরিত্র ব্যবহার করেন তবে উপরের অভিব্যক্তিগুলিতে আপনি যে চরিত্রটি ব্যবহার করছেন তা স্ল্যাশ প্রতিস্থাপন করতে হবে। ব্যাখ্যার জন্য পিটারজেসিএলওর মন্তব্য দেখুন।

সম্পাদিত: কিছু কোণার ক্ষেত্রে আগে জবাবদিহি না করায়, উপরের কমান্ডগুলি বেশ কয়েকবার পরিবর্তিত হয়েছে। বিশদ জন্য সম্পাদনা ইতিহাস পরীক্ষা করুন।


17
এটি লক্ষ্য করার মতো বিষয় যে আপনি এটিকে সীমানা হিসাবে ব্যবহার না করে ফরোয়ার্ড স্ল্যাশগুলি এড়িয়ে চলতে পারবেন। বেশিরভাগ (সমস্ত?) সংস্করণ আপনাকে যে কোনও চরিত্র ব্যবহার করতে দেয়, যতক্ষণ না এটি প্যাটার্নটি ফিট করে: $ প্রতিধ্বনি 'foo / বার' |
সেডস

2
sed -e 's / (\ / \ | \\\ | &) / \\ & / g' ওএসএক্সে আমার পক্ষে কাজ করে নি তবে এটি করে: সেডস / ([[\\\ / &]) / \\ & / g 'এবং এটি সামান্য খাটো।
jcoffland

1
অনুসন্ধানের প্যাটার্নের জন্য KEYWORD, জিএনইউ সেডে , এখানে আরও দুটি চর রয়েছে ^, যা $উপরে উল্লিখিত নেই:s/[]\/$*.^|[]/\\&/g
পিটার.ও

1
@ জেসি: স্থির। আসলে, সেই ভুলটিই আমি খুব প্রথম অনুচ্ছেদে সতর্ক করেছিলাম। আমার ধারণা আমি যা প্রচার করি তা অনুশীলন করি না।
পিয়ানোসরাস

1
@NeronLeVelu: আমি নিশ্চিত আমি জানেন করছি আপনি কি বলতে চাইছেন, কিন্তু "পাইপ বা ভেরিয়েবল কোন বিশেষ অর্থ এটা ফলাফলের চালানোর আগে শেল দ্বারা পার্স করা হয়, ভেরিয়েবল ভিতরে তাই উদ্ধৃতি চিহ্ন নিরাপদ উদাহরণস্বরূপ, চলমান চেষ্টা করুন।। A='foo"bar' echo $A | sed s/$A/baz/এ । ব্যাশ উদ্ধৃতি চিহ্ন শুধু 'foo বিন্যাস' এবং এটি প্রায় 'দন্ড' মত চিকিত্সা করা হয়।
Pianosaurus

92

সেড কমান্ড আপনাকে /বিভাজক হিসাবে পরিবর্তে অন্যান্য অক্ষর ব্যবহার করতে দেয় :

sed 's#"http://www\.fubar\.com"#URL_FUBAR#g'

ডাবল উদ্ধৃতি কোনও সমস্যা নয়।


5
আপনার এখনও পালাতে হবে .যা অন্যথায় একটি বিশেষ অর্থ রয়েছে। আমি আপনার উত্তর সম্পাদনা করেছি।
ইপিড

আমি কেবল করার চেষ্টা করেছি: sed '/CLIENTSCRIPT="foo"/a CLIENTSCRIPT2="hello"' fileসাথে sed '|CLIENTSCRIPT="foo"|a CLIENTSCRIPT2="hello"' fileএবং এটি একই রকম হয় না।
দিমিত্রি কোপ্রিভা

1
যেহেতু এটি কেবলমাত্র বিকল্পের ক্ষেত্রে প্রযোজ্য, তাই বলা উচিত: sসেডের কমান্ড (বিকল্প হিসাবে) আপনাকে / পৃথক হিসাবে পরিবর্তে অন্য অক্ষর ব্যবহার করতে দেয়। এছাড়াও, স্ল্যাশ অক্ষরগুলির সাহায্যে ইউআরএল-এ সেড কীভাবে ব্যবহার করা যায় তার একটি উত্তর এটি। এটি কোনও ব্যবহারকারীর দ্বারা প্রবেশ করা স্ট্রিং থেকে কীভাবে রক্ষা করতে পারে সে ক্ষেত্রে ওপি প্রশ্নের উত্তর দেয় না, এতে /, contain থাকতে পারে, তবে আপনি যদি এটি ব্যবহার করার সিদ্ধান্ত নেন তবে # এবং তদতিরিক্ত, ইউআরআইতে # খুব থাকতে পারে
পাপো

2
এটা আমার জীবন পরিবর্তন! ধন্যবাদ!
ফ্রান্সিসকন সান্টোস

48

প্রতিস্থাপনের ধারাটিতে বিশেষভাবে চিকিত্সা করা কেবলমাত্র তিনটি অক্ষর হ'ল ( /ধারাটি বন্ধ করা), \(অক্ষরগুলি থেকে বাঁচতে, পশ্চাদপসরণ, এবং সি।) এবং &(প্রতিস্থাপনে ম্যাচটি অন্তর্ভুক্ত করার জন্য)। অতএব, আপনাকে যা করতে হবে তা হ'ল তিনটি অক্ষর থেকে বাঁচতে:

sed "s/KEYWORD/$(echo $REPLACE | sed -e 's/\\/\\\\/g; s/\//\\\//g; s/&/\\\&/g')/g"

উদাহরণ:

$ export REPLACE="'\"|\\/><&!"
$ echo fooKEYWORDbar | sed "s/KEYWORD/$(echo $REPLACE | sed -e 's/\\/\\\\/g; s/\//\\\//g; s/&/\\\&/g')/g"
foo'"|\/><&!bar

এছাড়াও একটি নতুন লাইন, আমি মনে করি। আমি কীভাবে একটি নিউলাইন এড়াতে পারি?
আলেকজান্ডার গ্ল্যাডিশ

2
ব্যাকস্ল্যাশ সম্পর্কিত ইকো-র ডিফল্ট আচরণটি কী তা সতর্কতা অবলম্বন করুন। ব্যাশে, ব্যাকস্ল্যাশ পলায়নের কোনও ব্যাখ্যার কাছে প্রতিধ্বনি ডিফল্ট হয়, যা এখানে উদ্দেশ্যটি সরবরাহ করে। অন্যদিকে ড্যাশ (শি) -এর প্রতিধ্বনি ব্যাকস্ল্যাশ পলায়নের ব্যাখ্যা করে এবং এটিকে দমন করার মতো কোনও উপায় নেই, যতটা আমি জানি। সুতরাং, ড্যাশ (sh) এ, প্রতিধ্বনি $ x এর পরিবর্তে, '% s \ n' $ x করুন print
ইউসুফ এল্ডাকার

এছাড়াও, ব্যবহারকারী ইনপুটে ব্যাকস্ল্যাশগুলিকে আক্ষরিক হিসাবে বিবেচনা করার জন্য সর্বদা পঠন করার সময় -r বিকল্পটি ব্যবহার করুন।
ইউসুফ এল্ডাকার

অন্যান্য শাঁসের সাথে ক্রস প্ল্যাটফর্মের সামঞ্জস্যের জন্য, আপনাকে সেড
দেজয় ক্লেটন

2
@ ড্রুক্স এই তিনটি চরিত্রই প্রতিস্থাপনের ধারাটিতে একমাত্র বিশেষ অক্ষর । প্যাটার্ন ক্লজে আরও অনেক কিছু বিশেষ।
লেনজ

33

পিয়ানোসরাস এর নিয়মিত প্রকাশের ভিত্তিতে, আমি একটি বাশ ফাংশন তৈরি করেছি যা কীওয়ার্ড এবং প্রতিস্থাপন উভয়ই এড়িয়ে যায়।

function sedeasy {
  sed -i "s/$(echo $1 | sed -e 's/\([[\/.*]\|\]\)/\\&/g')/$(echo $2 | sed -e 's/[\/&]/\\&/g')/g" $3
}

আপনি এটি কীভাবে ব্যবহার করবেন তা এখানে:

sedeasy "include /etc/nginx/conf.d/*" "include /apps/*/conf/nginx.conf" /etc/nginx/nginx.conf

3
ধন্যবাদ! অন্য কেউ যদি এটির ব্যবহারের চেষ্টা করার সময় সিনট্যাক্স ত্রুটি পায় তবে ঠিক আমার মতো, বাশ ব্যবহার করে এটি চালানো মনে রাখবেন, শ নয়
কনস্ট্যান্টিন পেরিয়াস্লোভ

1
সেডের চারপাশে মোড়কের পরিবর্তে কেবল সেডের জন্য একটি স্ট্রিং এড়াতে কোনও ফাংশন রয়েছে?
সিএমসিডিগ্রাগনকাই

আরে, ইকো দিয়ে পাইপ শুরু করার বিষয়ে কেবলমাত্র একটি সাধারণ সতর্কতা: ইকো প্রয়োগের কয়েকটি (বেশিরভাগ?) বিকল্প গ্রহণ করে (দেখুন man echo), যখন আপনার যুক্তি $1ড্যাশ দিয়ে শুরু হয় তখন পাইপটি অপ্রত্যাশিতভাবে আচরণ করে । পরিবর্তে, আপনি আপনার পাইপ দিয়ে এটি শুরু করতে পারেন printf '%s\n' "$1"
পিয়ানোসরস

17

প্রতিক্রিয়া জানাতে একটু দেরি হয়েছে ... তবে এটি করার আরও একটি সহজ উপায় রয়েছে। কেবল সীমানা পরিবর্তন করুন (অর্থাত্ ক্ষেত্রগুলি পৃথককারী চরিত্র)। সুতরাং, আপনি পরিবর্তে s/foo/bar/লিখুন s|bar|foo

এবং, এখানে এটি করার সহজ উপায়:

sed 's|/\*!50017 DEFINER=`snafu`@`localhost`\*/||g'

ফলস্বরূপ আউটপুটটি এই ন্যক্কারজনক ডিফাইনার ধারা থেকে বঞ্চিত।


10
না, &এবং `still অবশ্যই অব্যাহতি পেতে হবে, অবশ্যই ডিলিমিটার, যাকেই বেছে নেওয়া উচিত।
মীরাবিলোস

3
এটি আমার সমস্যার সমাধান করেছিল, কারণ প্রতিস্থাপনের স্ট্রিংয়ে আমার "/" অক্ষর ছিল। ধন্যবাদ মানুষ!
ইভজেনি গোল্ডিন

আমার জন্য কাজ কর. যা করছি তা হ'ল $পরিবর্তনের বিষয়ে স্ট্রিং এ পালানোর চেষ্টা করা এবং $প্রতিস্থাপনের স্ট্রিংয়ের অর্থ বজায় রাখা উচিত । আমি পরিবর্তন করতে চান $XXXভেরিয়েবলের মান $YYY, sed -i "s|\$XXX|$YYY|g" fileকাজ করে জরিমানা।
হাকুনামী

11

দেখা যাচ্ছে আপনি ভুল প্রশ্ন জিজ্ঞাসা করছেন। আমিও ভুল প্রশ্ন করেছিলাম। এটির ভুল হওয়ার কারণটি প্রথম বাক্যটির শুরু: "আমার বাশ স্ক্রিপ্টে ..."।

আমার একই প্রশ্ন ছিল এবং একই ভুল হয়েছিল। আপনি যদি ব্যাশ ব্যবহার করছেন তবে আপনার স্ট্রিং প্রতিস্থাপনের জন্য সেড ব্যবহার করার দরকার নেই (এবং এটি ব্যাশের মধ্যে নির্মিত প্রতিস্থাপন বৈশিষ্ট্যটি ব্যবহার করা আরও পরিষ্কার)।

পরিবর্তে যেমন কিছু, উদাহরণস্বরূপ:

function escape-all-funny-characters() { UNKNOWN_CODE_THAT_ANSWERS_THE_QUESTION_YOU_ASKED; }
INPUT='some long string with KEYWORD that need replacing KEYWORD.'
A="$(escape-all-funny-characters 'KEYWORD')"
B="$(escape-all-funny-characters '<funny characters here>')"
OUTPUT="$(sed "s/$A/$B/g" <<<"$INPUT")"

আপনি একচেটিয়াভাবে ব্যাশ বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন:

INPUT='some long string with KEYWORD that need replacing KEYWORD.'
A='KEYWORD'
B='<funny characters here>'
OUTPUT="${INPUT//"$A"/"$B"}"

বিটিডাব্লু, সিনট্যাক্স এখানে হাইলাইট করা ভুল। বাহ্যিক উক্তিগুলি মেলে এবং অভ্যন্তরের উদ্ধৃতিগুলি মেলে। অন্য কথায়, এটা দেখে মনে হচ্ছে $Aএবং $Bunquoted, কিন্তু তারা নয়। এর ${}বাইরের উদ্ধৃতিগুলির সাথে মিল নেই es
ডিসটেনসন

আপনাকে অবশ্যই কোনও অ্যাসাইনমেন্টের ডান হাতের উদ্ধৃতি দিতে হবে না (যদি না আপনি এর মতো কিছু করতে চান var='has space') - OUTPUT=${INPUT//"$A"/"$B"}নিরাপদ।
বেনিয়ামিন ডাব্লু।

আপনাকে অবশ্যই কোনও অ্যাসাইনমেন্টের ডান হাতের উদ্ধৃতি দিতে হবে না (যদি না আপনি এটি সত্যিকারের জগতে কাজ করতে চান এবং কেবল আপনার পাগল স্কিলজ প্রদর্শনের জন্য খেলনা স্ক্রিপ্ট হিসাবে না)। আমি সবসময় প্রতিটি পরিবর্তনশীল প্রসারণ উদ্ধৃত করার চেষ্টা করি যা শেলটি ব্যাখ্যা করতে চাই না, যদি না আমার নির্দিষ্ট কারণ না থাকে। এইভাবে, জিনিসগুলি প্রায়শই কম ভাঙে। বিশেষত যখন নতুন বা অপ্রত্যাশিত ইনপুট সরবরাহ করা হয়।
ডেসটেনসন

1
ম্যানুয়ালটি দেখুন : "সমস্ত মান টিল্ড সম্প্রসারণ, প্যারামিটার এবং পরিবর্তনশীল সম্প্রসারণ, কমান্ড প্রতিস্থাপন, পাটিগণিতের সম্প্রসারণ এবং উদ্ধৃতি অপসারণ (নীচে বিস্তারিত)" এর মধ্য দিয়ে যায় " অর্থাৎ, ডাবল উক্তিগুলির সমান।
বেনিয়ামিন ডাব্লু।

1
আপনি যদি একটি ফাইলের মধ্যে সেড ব্যবহার করতে চান?
ইফ্রেন

1

অজানা ব্যবহার করুন - এটি পরিষ্কার:

$ awk -v R='//addr:\\file' '{ sub("THIS", R, $0); print $0 }' <<< "http://file:\_THIS_/path/to/a/file\\is\\\a\\ nightmare"
http://file:\_//addr:\file_/path/to/a/file\\is\\\a\\ nightmare

2
সমস্যাটি awkহ'ল এর সাথে তেমন কিছু পাওয়া যায় না sed -i, যা 99% সময় খুব কাজে আসে।
টিনো

এটি সঠিক দিকের একটি পদক্ষেপ, তবে অ্যাডক এখনও আপনার প্রতিস্থাপনে কিছু মেটাচ্যাকার্টারের ব্যাখ্যা করে, তাই এটি এখনও ব্যবহারকারী ইনপুটটির জন্য নিরাপদ নয়।
জেরেমি হুইস্ক্যাম্প

0

আমি এখানে কিছুদিন আগে ব্যবহার করা এমন একটি এডাব্লু কে এর উদাহরণ। এটি এমন একটি AWK যা নতুন এডাব্লুকেএস প্রিন্ট করে। এডাব্লুকে এবং এসইডি একই রকম হওয়ায় এটি একটি ভাল টেম্পলেট হতে পারে।

ls | awk '{ print "awk " "'"'"'"  " {print $1,$2,$3} " "'"'"'"  " " $1 ".old_ext > " $1 ".new_ext"  }' > for_the_birds

এটি অত্যধিক দেখায়, তবে কোনও একরকম উদ্ধৃতিগুলির সংমিশ্রণটি 'আক্ষরিক হিসাবে মুদ্রিত রাখার জন্য কাজ করে। তারপরে যদি আমি সঠিকভাবে মনে করি তবে বৈকল্পিকগুলি কেবল এই জাতীয় উদ্ধৃতি দ্বারা ঘিরে থাকে: "$ 1"। এটি ব্যবহার করে দেখুন, এসইডি দিয়ে এটি কীভাবে কাজ করে তা আমাকে জানান।


0

আমার সিডেসি ফাংশনটির একটি উন্নতি হয়েছে যা ট্যাবের মতো বিশেষ অক্ষরগুলির সাথে ভেঙে যায়।

function sedeasy_improved {
    sed -i "s/$(
        echo "$1" | sed -e 's/\([[\/.*]\|\]\)/\\&/g' 
            | sed -e 's:\t:\\t:g'
    )/$(
        echo "$2" | sed -e 's/[\/&]/\\&/g' 
            | sed -e 's:\t:\\t:g'
    )/g" "$3"
}

তো, কী আলাদা? $1এবং $2শেল বিস্তৃতি এড়াতে এবং ট্যাব বা ডাবল স্পেস সংরক্ষণ করতে উদ্ধৃতিতে আবৃত।

অতিরিক্ত পাইপিং | sed -e 's:\t:\\t:g'(আমি :টোকেন হিসাবে পছন্দ করি ) যা কোনও ট্যাবকে রূপান্তর করে \t


তবে পাইপগুলিতে প্রতিধ্বনি ব্যবহার সংক্রান্ত সিডেসি উত্তর সম্পর্কে আমার মন্তব্য দেখুন।
পিয়ানোসরস

0

এগুলি হ'ল পালানোর কোডগুলি যা আমি পেয়েছি:

* = \x2a
( = \x28
) = \x29

" = \x22
/ = \x2f
\ = \x5c

' = \x27
? = \x3f
% = \x25
^ = \x5e

-1

"এবং 'শেলের সীমাবদ্ধতার সাথে ঘটে যাওয়া সমস্ত আনন্দ ভুলে যাবেন না

সুতরাং (কেএসএসে)

Var=">New version of \"content' here <"
printf "%s" "${Var}" | sed "s/[&\/\\\\*\\"']/\\&/g' | read -r EscVar

echo "Here is your \"text\" to change" | sed "s/text/${EscVar}/g"

গুগলের মাধ্যমে পাওয়া ফলাফলগুলি রক্ষা করার জন্য আমার ঠিক যে দিকটি প্রয়োজন ছিল, তাই কারও পক্ষে সহায়ক হতে পারে - - "এস / [& \\\ * \\" \ '\ "') () / \\ & / জি '
মোলবঅর্গ

-1

আপনি যদি কেবল সেড কমান্ডে ভেরিয়েবল মানটি প্রতিস্থাপন করতে চান তবে কেবল উদাহরণটি সরিয়ে ফেলুন:

sed -i 's/dev-/dev-$ENV/g' test to sed -i s/dev-/dev-$ENV/g test

-2

যদি কেসটি এমন হয় যে আপনি sedপ্যাটার্নটি প্রতিস্থাপনের জন্য পাসওয়ার্ডটি একটি এলোমেলো পাসওয়ার্ড তৈরি করছেন , তবে আপনি এলোমেলো স্ট্রিংয়ে অক্ষরের কোন সেটটি সম্পর্কে সতর্কতা অবলম্বন করবেন। আপনি যদি বেস 64 হিসাবে মানটিকে এনকোড করে একটি পাসওয়ার্ড চয়ন করেন, তবে কেবলমাত্র অক্ষর রয়েছে যা বেস 64 এ উভয়ই সম্ভব এবং এটি sedপ্রতিস্থাপনের প্যাটার্নেও একটি বিশেষ অক্ষর । এই চরিত্রটি "/", এবং আপনি যে পাসওয়ার্ডটি তৈরি করছেন তা সহজেই সরানো হয়েছে:

# password 32 characters log, minus any copies of the "/" character.
pass=`openssl rand -base64 32 | sed -e 's/\///g'`;

-4

এটি করার একটি সহজ উপায় হ'ল হাতের আগে স্ট্রিং তৈরি করা এবং এটি প্যারামিটার হিসাবে ব্যবহার করা sed

rpstring="s/KEYWORD/$REPLACE/g"
sed -i $rpstring  test.txt

ব্যর্থতা এবং অত্যন্ত বিপজ্জনক, যেমন REPLACE ব্যবহারকারীর সরবরাহ করা হয়: REPLACE=/দেয়sed: -e expression #1, char 12: unknown option to `s'
টিনো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.