স্ট্রিম এডিটর (সেড) ব্যবহার করে বিকল্পের সাথে সমস্ত নাম প্রতিস্থাপন করুন


2

এই প্রশ্নটি আমি একটি টাস্কে পেয়েছি। কিছুই কাজ করে না .. কেউ আমাকে সাহায্য করতে পারে?

একটি সেড স্ক্রিপ্ট লিখুন যা সমস্ত নামকে বিকল্পের সাথে প্রতিস্থাপন করে,

প্রতিটি শব্দ অনুসন্ধান করুন যে:

  • মূলধন দিয়ে শুরু করুন,
  • দুটি অক্ষরের চেয়ে দীর্ঘ
  • যেখানে সামনে একটি সাদা জায়গা আছে এবং
  • সাদা স্থানের আগে অক্ষরটি একটি বিরামচিহ্ন নয় যা বাক্যটি শেষ করে।

"Derp" - শব্দটির শেষ দুটি অক্ষরে এই শব্দগুলি প্রতিস্থাপন করুন।


আপনি দয়া করে পছন্দসই কর্মের একটি উদাহরণ প্রদান করতে পারেন? এবং আপনি কি ইতিমধ্যে চেষ্টা করেছেন তা অন্তর্ভুক্ত করতে পারেন?
ইউজিন এস

উত্তর:


1

এটি সিডে করা বেশ বিশ্রী, তবে এখানে এমন একটি সংস্করণ রয়েছে যা কাজ করতে পারে তবে একটি অক্ষর (আমি বেছে নিয়েছি %) যা ইনপুটটিতে প্রদর্শিত হবে না। চরিত্রটি চিহ্নিত করার জন্য ব্যবহৃত হয়।

বলুন wordsযে নীচের বিষয়বস্তু সহ আপনার কাছে একটি পাঠ্য ফাইল ডাকা হয়েছে :

Will He beat Sit Down Boy Oh Not now Latch Wi, Qq or Spat? GNU Hurd, protocols on GNU Mach. The Hurd versus Unix.

নিম্নলিখিত bashলিপিটি কাজ করবে:

cat words
sed 's/ [A-Z][A-Za-z]*[A-Za-z]\{2\}/%&/g' words|tee a
sed 's/\([.!?]\)%/\1/g' a|tee b
sed 's/% [A-Za-z]*\([A-Za-z]\{2\}\)/ Derp\1/g' b|tee c

উপরের ফলাফলটি হবে (আমি প্রতিটি নতুন লাইনে আলাদা করেছি):

Will He beat Sit Down Boy Oh Not now Latch Wi, Qq or Spat? GNU Hurd, protocols on GNU Mach. The Hurd versus Unix.

Will He beat% Sit% Down% Boy Oh% Not now% Latch Wi, Qq or% Spat?% GNU% Hurd, protocols on% GNU% Mach.% The% Hurd versus% Unix.

Will He beat% Sit% Down% Boy Oh% Not now% Latch Wi, Qq or% Spat? GNU% Hurd, protocols on% GNU% Mach. The% Hurd versus% Unix.

Will He beat Derpit Derpwn Derpoy Oh Derpot now Derpch Wi, Qq or Derpat? GNU Derprd, protocols on DerpNU Derpch. The Derprd versus Derpix.

এখানে কিভাবে এটা কাজ করে:

  • প্রথম লাইনটি কেবল ফাইলটি মুদ্রণ করে, যাতে আপনি প্রারম্ভিক অবস্থানটি দেখতে পান।
  • দ্বিতীয় লাইনটি সমস্ত মূলধনী শব্দের চিহ্নিত করে যা কোনও স্পেসের আগে এবং এর পরে 2 অক্ষর দীর্ঘ হয় %। সুতরাং, এটি যেমন চিহ্নিত Latchকরা হবে % Latch। স্পেসটি নোট করুন, আমি এই স্পেস-ওয়ার্ডটি কল করব।
  • তৃতীয় লাইনটি সব স্থান-যে শব্দ একটি অক্ষর একটি বাক্য শেষ পূর্বে থেকে চিহ্ন মুছে ফেলা হবে (সরলতা জন্য, আমি বেছে নেওয়া হয়েছে শুধুমাত্র ., !অথবা ?- আপনি যেমন অন্যদের যোগ করতে পারেন )বা এই ধরনের প্রয়োজন হলে)
  • তৃতীয় লাইনটি প্রকৃত কি করতে হবে Derpরূপান্তর - অর্থাৎ সব স্থান-যে শব্দ দিয়ে চিহ্নিত করা প্রতিস্থাপন %সঙ্গে DerpXX, XXযে স্থান শব্দ দুটি গত অক্ষর হচ্ছে

দ্রষ্টব্য এমন প্রযুক্তি রয়েছে যা এখানে সম্বোধন করা হয়নি, যেমন:

  • এটি কেবল মার্কিন ASCII শব্দের জন্য কাজ করবে (উদাঃ সমস্ত ফরাসী শব্দের জন্য কাজ করবে না, যেমন Être)
  • অন্যান্য অক্ষরের বিবেচনা করা প্রয়োজন হতে পারে (যেমন হয় Oceansমধ্যে "Oceans Eleven"একটি শব্দ যদিও এটা আছে বলে মনে করা "সামনে?)
  • স্পেসহীন সাদা জায়গার জন্য কাজ করবে না (যেমন ট্যাবগুলি)

ইত্যাদি।

এটিকে বিশুদ্ধরূপে একটি sedস্ক্রিপ্ট তৈরি করতে, কেবল যুক্তিযুক্ত:

sed '
s/ [A-Z][A-Za-z]*[A-Za-z]\{2\}/%&/g
s/\([.!?]\)%/\1/g
s/% [A-Za-z]*\([A-Za-z]\{2\}\)/ Derp\1/g
' words

স্পষ্টতই, বাস্তব বিশ্বে, আমি sedএই জাতীয় কাজগুলি করতে ব্যবহার করব না। তারপরে আবার, আমার সম্ভবত এই জাতীয় কাজগুলি নাও হবে ... :)


ধন্যবাদ ! এটা কাজ করেছে ! আমি এই প্রশ্নের উত্তরটি ভুল ছিল কারণ আমি কেবল [এজেড] অনুসন্ধান করেছি ... ধন্যবাদ!
জিলিণী

নিশ্চিত জিনিস, আনন্দিত এটি কাজ!
icyrock.com

@ জেলিইনি: সুপার ইউজারে আপনাকে স্বাগতম, দয়া করে ভোটিং আপ করুন এবং উত্তরগুলি গ্রহণ করুন যা আপনাকে সহায়তা করেছে। আপনি ভোটের সংখ্যার উপরের তীরের পাশাপাশি ভোটদানের নিয়ন্ত্রণের অধীনে গ্রহণযোগ্য চিহ্ন দিয়ে এটি করতে পারেন। এইভাবে যে ব্যক্তি আপনাকে এবং আপনাকে নিজেরাই সহায়তা করেছিলেন উভয়ই খ্যাতি পাবেন। এছাড়াও চেক আউট খাটো সংস্করণ potong দ্বারা।
তামারা উইজসম্যান

0

এটি আপনার পক্ষে কাজ করতে পারে:

sed ':a;s/\([^.!?] \)[A-Z][A-Za-z]*\([A-Za-z]\{2\}\)\>/\1\nDerp\2/;ta;s/\n//g' file

সুপার ব্যবহারকারীকে স্বাগতম! দয়া করে নোট করুন যে অন্য উত্তরে একটি মন্তব্য আছে যা এটি সাহায্য করেছে। আপনার সংস্করণটি আলাদা / আরও ভাল কী করে? আপনি কি পার্থক্যগুলি বিস্তারিতভাবে বলতে পারেন?
তমারা উইজসম্যান

1
তবে এখন এটি কেবলমাত্র উপাধি পরিবর্তন করে। সুতরাং যখন একটি উপাধি এবং পারিবারিক নাম থাকে তখন এটি শুধুমাত্র ডার্প + 2 চ্যারাক্টারে উপাধি পরিবর্তন করে। আমি কীভাবে পারিবারিক নাম, হার্প + 2 চ্যারাক্টরে পরিবর্তন করতে পারি? আমি একই অনুসন্ধান স্ট্রিংটি চেষ্টা করেছি কিন্তু এটি কার্যকর হয়নি ...
জিলিইনি

@Jleeeeny টেস্ট ডেটার প্রদান করুন
potong

@ পোটং আমি পেয়েছি! :) তবে আপনার সাহায্যের জন্য ধন্যবাদ
Jleeeeny
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.