সেডে একক উদ্ধৃতি থেকে কীভাবে বাঁচবেন?


92

ইতিমধ্যে উদ্ধৃতি দ্বারা পরিবেষ্টিত সেড এক্সপ্রেশনটিতে একটি একক উদ্ধৃতি থেকে কীভাবে বাঁচবেন?

উদাহরণ স্বরূপ:

sed 's/ones/one's/' <<< 'ones thing'


4
সংক্ষিপ্ত উত্তরটি " আপনি এটি করতে পারবেন না " - কাজের কাজ সমস্ত কাজকে ভালভাবে উপস্থাপন করেছে।
গ্লেন জ্যাকম্যান

উত্তর:


150

sedডাবল উদ্ধৃতি সহ উদ্ধৃতি কোড:

    $ sed "s/ones/one's/"<<<"ones thing"   
    one's thing

আমি কয়েকশো ব্যাকস্ল্যাশ সহ কোড অবলম্বন পছন্দ করি না - আমার চোখে কষ্ট দেয়। সাধারণত আমি এইভাবে করি:

    $ sed 's/ones/one\x27s/'<<<"ones thing"
    one's thing

7
এটি sed -iকোনও বিশেষ কারণে কাজ করছে বলে মনে হচ্ছে না ?
সামাকো

এটি লক্ষ করা উচিত যে ডাবল কোট সহ আশেপাশের সেড কমান্ডগুলি সেই কমান্ডগুলিকে শেল দ্বারা বিভক্ত করতে দেয় এবং অপ্রত্যাশিত সমস্যা হতে পারে।
পটং

38

একটি কৌশল হ'ল সংলগ্ন স্ট্রিংগুলির শেল স্ট্রিং কনটেনটেশন ব্যবহার করা এবং শেল এস্কেপিং ব্যবহার করে এম্বেড করা উদ্ধৃতিটি এড়ানো:

sed 's/ones/two'\''s/' <<< 'ones thing'

two's thing

সেড এক্সপ্রেশনটিতে 3 টি স্ট্রিং রয়েছে, যা শেলটি পরে এক সাথে সেলাই করে:

sed 's/ones/two'

\'

's/'

আশা করি যে অন্য কাউকে সাহায্য করবে!


সম্ভবত একটি সহজ রূপ: সেড 's / বেশী / দুই''র /' <<< 'এক জিনিস'
গ্রেগরি

@ গ্রেগরি: sed 's/ones/two''s/' <<< 'ones thing'না, আউটপুটস twos thing। এটি 'আউটপুটটিতে অনুপস্থিত । এই উত্তরে বর্ণিত পদ্ধতিতে আপনাকে এটি করতে হবে।
উইসবাকী

@ উইসবাকি জেডএস-এ আমি (ফ্রিবিএসডি / ম্যাকোস) যে সংস্করণের ব্যবহার করছি তার সাথে এটি অবশ্যই "দু'জনের জিনিসকেই ছাড়িয়ে যাবে"।
গ্রেগরি

আমাকে সাহায্য করে দারুণ সাহায্যকারী মানুষ, শেল তারপর এক সাথে সেলাই করে ches
প্রীতেক গুপ্ত

6

সবচেয়ে ভাল উপায়টি ব্যবহার করা $'some string with \' quotes \''

যেমন:

sed $'s/ones/two\'s/' <<< 'ones thing'

4
সি-স্টাইলটি $'string'ব্যাশ-নির্দিষ্ট, সুতরাং এটি পসিক্স শেলের কাছে পোর্টেবল নয়।
ট্রিপলি

এটি bashনির্দিষ্ট নয় । এটিতে kshএবং পাওয়া যায় zsh, তবে হ্যাঁ, এটি পসিক্সের একটি এক্সটেনশন যা আপনি পোর্টেবল স্ক্রিপ্ট না লিখলে ভাল। একমাত্র নেতিবাচকতাটি হ'ল আপনি যে কোনও অন্যান্য ব্যাকস্ল্যাশগুলি পাশাপাশি ব্যবহার করতে পারেন escape
dannyw

6

সেড কমান্ডের বাইরের অংশে কেবল ডাবল উদ্ধৃতি ব্যবহার করুন।

$ sed "s/ones/one's/" <<< 'ones thing'
one's thing

এটি ফাইলগুলির সাথেও কাজ করে।

$ echo 'ones thing' > testfile
$ sed -i "s/ones/one's/" testfile
$ cat testfile
one's thing

আপনার যদি স্ট্রিংয়ের ভিতরে একক এবং ডাবল উক্তি থাকে তবে তাও ঠিক। শুধু ডাবল উদ্ধৃতি এড়ানো।

উদাহরণস্বরূপ, এই ফাইলটিতে উভয় একক এবং ডাবল উদ্ধৃতি সহ একটি স্ট্রিং রয়েছে। আমি একটি একক উক্তি যুক্ত করতে এবং কিছু ডাবল উদ্ধৃতি মুছে ফেলার জন্য ব্যবহার করব।

$ cat testfile
"it's more than ones thing"
$ sed -i "s/\"it's more than ones thing\"/it's more than one's thing/" testfile 
$ cat testfile 
it's more than one's thing

ধন্যবাদ! আমি রেজেক্সকে ভালবাসি, সেডকে ভালবাসি এবং এখন আমি আপনাকে ভালবাসি <3
গ্যাব্রিয়েল এ জোরিলা

3

এই কিম্ভুতকিমাকার ধরনের কিন্তু আমি পাই নি \'মধ্যে sed 's/ones/one\'s/'কাজ করতে। আমি শেল স্ক্রিপ্টটি তৈরি করতে এটির সন্ধান import 'hammerjs';করছিলাম src/main.tsযা কৌনিক সহ আমার ফাইলটিতে স্বয়ংক্রিয়ভাবে যুক্ত হবে ।

আমি কাজে যা পেয়েছি তা হ'ল:

apost=\'
sed -i '' '/environments/a\
import '$apost'hammerjs'$apost';' src/main.ts

সুতরাং উপরের উদাহরণের জন্য, এটি হবে:

apost=\'
sed 's/ones/one'$apost's/'

কেন \'নিজে থেকে কাজ করবে না আমার কোনও ধারণা নেই , তবে এটি রয়েছে।



0

আমি জানি এটি একটি কপির মতো শোনা যাচ্ছে তবে আমি যখন কখনও স্ট্রিংয়ের মধ্যে একক এবং ডাবল উদ্ধৃতি থাকতাম তখন আমি কখনও কাজ করতে পারি না। আমার মতো যে কোনও নবজাতককে সমস্যা হচ্ছে তাদের সহায়তা করার জন্য একটি বিকল্প হ'ল স্ট্রিংটি বিভক্ত করা। আমাকে 100 এরও বেশি ইনডেক্স। Hmtl ফাইলে কোড প্রতিস্থাপন করতে হয়েছিল। স্ট্রিংগুলির উভয়ই একক এবং ডাবল উদ্ধৃতি ছিল তাই আমি কেবল স্ট্রিংটি বিভক্ত করেছি এবং প্রথম ব্লকটি <!--এবং দ্বিতীয় ব্লকের সাথে প্রতিস্থাপন করেছি -->। এটি আমার সূচক html ফাইলগুলিতে গোলমাল করেছে তবে এটি কার্যকর হয়েছে।


0

অ্যাপলম্যাকোএক্সএক্স টার্মিনালের কিছু পালানো ব্যর্থ হয়:

sed 's|ones|one'$(echo -e "\x27")'s|1' <<<'ones thing'


0

বিভিন্ন স্ল্যাশগুলির সাথে বিভ্রান্তি এড়াতে বিকল্প স্ট্রিং সেপ্রেটার ব্যবহার করুন ":"

sed "s:ones:one's:" <<< 'ones thing'

অথবা আপনি যদি একক উদ্ধৃতিটি হাইলাইট করতে চান

sed "s:ones:one\'s:" <<< 'ones thing'

উভয় ফিরে

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