ইউএনক্সে টিআর কমান্ডের '-s', '-t', এবং '-c' বিকল্পগুলি কীভাবে কাজ করবে?


12

আমি পথ সংক্রান্ত বিভ্রান্ত -s, -tএবং -cঅপশন কাজ TR কমান্ড। যখন আমি করি

echo I am a good boy | tr good bad

আমি আউটপুট পেতে:

I am a bddd bdy

এটি বেশ বোঝা যায়, যেহেতু oপুনরাবৃত্তি হয় good। এর স্থানে সর্বশেষ সম্ভাব্য পরিবর্তন oহ'ল dএবং এর ফলে আউটপুট।

এখন যখন আমি

echo I am a good boy | tr -s good bad

আউটপুট হয়

I am a bd bdy

-sবিকল্প একটি একক occurence মধ্যে সেট 1 প্রতিটি অক্ষর প্রতিটি পুনরাবৃত্তি occurence আলিঙ্গন এবং তারপর সেট 2 সংশ্লিষ্ট চরিত্র যা একই পদে আছেন মধ্যে সেট 1 প্রতিটি অক্ষর পরিবর্তন অনুমিত হয়।

সুতরাং এটি করা উচিত ছিল

I am a bad bay.

কেন পরিবর্তন?

তাছাড়া, যখন আমি না

echo I am a good boy | tr -c good bad

আমি পাই dddddddgoodddodd

এই উদাহরণটি উল্লেখ করে -cবিকল্পটি কীভাবে কাজ করবে tr?

এবং পরিশেষে: কীভাবে নিজেকে একটি ভাল ছেলে থেকে খারাপ ছেলের মধ্যে পরিবর্তন করা যায় .... :): পি এটি,

echo I am a good boy | tr <something>আমাকে আউটপুট দেয়: I am a bad boy

উত্তর:


12

-s স্যুইচ করুন: চেপে নিন (পুনরাবৃত্ত অক্ষরগুলি সরিয়ে দিন)

echo i am a good boy | tr -s good bad

আউটপুট: i am a bd bdy

পর্দার আড়ালে দুটি জিনিস ঘটছে যা এটি ঘটায়। প্রথমত, দ্বিতীয় আর্গুমেন্টটি যদি trপ্রথমটির চেয়ে কম হয় তবে দ্বিতীয় আর্গের শেষ অক্ষরটি এটির প্রথম দৈর্ঘ্য হিসাবে পুনরাবৃত্তি করতে পুনরাবৃত্তি করা হয়। সুতরাং সমতুল্য আদেশ:

echo i am a good boy | tr -s good badd

অন্যান্য জিনিস যে ঘটছে তা যখন প্রথম আর্গুমেন্ট অক্ষর তারা কোনো পূর্ববর্তী সংঘটন (আমি দুই উল্লেখ করছি ওভাররাইট পুনরাবৃত্তি হয় ooমধ্যে গুলি good)। এটি কমান্ডকে এখন সমান করে তোলে:

echo i am a good boy | tr -s god bdd

(দ্বিতীয় oথেকে dপ্রতিস্থাপন পূর্ববর্তী মুছে ফেলা হয় oকরতে aপ্রতিস্থাপন, এটা অপ্রয়োজনীয় উপার্জন)

-sসুইচ ছাড়া আউটপুট হবে

i am a bddd bdy

সঙ্গে -sসুইচ tr'সংকুচিত' কোনো পুনরাবৃত্তি অক্ষর আছে যা তালিকাভুক্ত করা হয় গত যুক্তি চূড়ান্ত আউটপুট যাব:

i am a bd bdy

-c স্যুইচ করুন: পরিপূরক

-cসুইচ প্রথম আর্গুমেন্ট সম্পূরক (ARG 1 তালিকাভুক্ত নয় সমস্ত অক্ষর বড়) সাথে মেলাতে ব্যবহার করা হয়। ফলস্বরূপ, আরগ 1 এ অনেকগুলি অক্ষর থাকবে (256-3)। আগের ক্ষেত্রে যেমন 2 টির ক্ষেত্রে একই জিনিস ঘটে: আরগ 2 এর চূড়ান্ত চরিত্রটি দৈর্ঘ্য বা আরগ 1 এর সাথে মিলে যাওয়ার জন্য পুনরাবৃত্তি হয় So সুতরাং আসল বিবৃতি:

echo i am a good boy | tr -c good bad

সমান:

echo i am a good boy | tr abcefhijklmnp... baddddddddddd...

(নিখোঁজ নোট করুন g, oএবং dপ্রথম সেটে, স্পষ্ট dঅক্ষর সহ দ্বিতীয় সেটটিতে প্রতিটি অন্যান্য অক্ষর প্রতিস্থাপন করবে তা নোট করুন )

এ কারণেই i am a good boyপরিণত হয়dddddddgoodddodd

এখানে আরও তথ্য: http : //www.linuxj Journal.com/article/2563


সাধারণত সঠিক, -sসুইচটি শেষ আর্গুমেন্ট trথেকে কোনও অক্ষর (যেটি প্রথম বলে আপনি যেমন বলেন তেমন নয়) যেগুলি ইনপুটটিতে পুনরাবৃত্তি হয়েছিল তা হ্রাস করে except আপনি সংযুক্ত নিবন্ধে এটি উল্লেখ করা হয়েছে, এবং ম্যান পৃষ্ঠার "বিবরণ" বিভাগের শেষ অনুচ্ছেদে ব্যাখ্যা করা হয়েছে । tr
রেভ্রন

4

আপনার বোঝাপড়াটি -sভুল, এটি একক অক্ষরের সাথে ইনপুটে সেট 1-এ অক্ষরের পুনরাবৃত্ত ইভেন্টগুলি প্রতিস্থাপন করে। এটি সেটটি পরিবর্তন করে না, যেমন eg

echo i am a good boy | tr -s god bad

দেয়

i am a bad bay

-cবিকল্প প্রতিস্থাপিত তার সম্পূরক সাথে সেট 1 (অর্থাৎ। সমস্ত অক্ষর সেট সেট 1 নেই অন্তর্ভুক্ত)। আপনি উদাহরণস্বরূপ নির্দিষ্ট অক্ষরগুলি বাদে সমস্ত অপসারণ করতে এটি ব্যবহার করতে পারেন।

echo i am a good boy | tr -cd gobdy

আউটপুট

goodboy

: -S বিকল্প সম্পর্কিত আপনার বক্তব্যটি আমি পেয়েছি, তবে আমার প্রশ্নটি হল: কীভাবে: প্রতিধ্বনি আমি একটি ভাল ছেলে | টিআর-এস ভাল খারাপ ফলাফল প্রদান করে: আমি একটি বিডি বিডি এটি তখনই সম্ভব যখন এটি ঘটে: প্রথম আমি একজন ভাল ছেলেকে পরিবর্তিত করে আমি বিডিডি বিডি হয়ে যাই তবে -s বিকল্পটি একাধিক ডি এর উপস্থিতিগুলিকে একক করে পরিবর্তিত করে অর্থাত্: আমি একজন বিডিডি বিডি আছি তারপরে আমি পরিবর্তিত হয়ে বিডি বিডি আসলে এটি কি ঘটছে? দয়া করে আমার জন্য এটিকে ভেঙে দিন, -c বিকল্পের সাথে একই প্রতিধ্বনি কীভাবে আমি একটি ভাল ছেলে | টিআরসিডি গবদি এটি দিচ্ছেন: বিদায়

1

অন্যান্য উত্তর আবৃত tr'র -s, -tএবং -cঅপশন কিন্তু সম্পূর্ণতার জন্য:

আপনি ভুল সমস্যায় পড়েছেন বলে আপনি সমস্যায় পড়ছেন।

  • tr চরিত্র রূপান্তর জন্য
  • sed স্ট্রিম সম্পাদনার জন্য।

যেহেতু উভয় goodএবং badস্রোতে অক্ষরের ক্রম sedহ'ল একটি ভাল মিল।

echo I am a good boy | <something> আমাকে এই হিসাবে আউটপুট দেয়: I am a bad boy

$ echo I am a good boy | sed s/good/bad/g
I am a bad boy

দ্য s/..../..../সাবস্টিটিউট। প্রথম নিয়মিত প্রকাশটি যাই হোক না কেন যা মিলবে তা দ্বিতীয়টির সাথে প্রতিস্থাপন করা হবে। /gশেষে পতাকা গ্লোবাল প্রতিস্থাপন জন্য এই ভাবে সব ঘটনার শুধুমাত্র প্রথম না প্রতিস্থাপিত হবে।

$ echo I am a good boy and a good boy is me. | sed s/good/bad/
I am a bad boy and a good boy is me.

$ echo I am a good boy and a good boy is me. | sed s/good/bad/g
I am a bad boy and a bad boy is me.

0

হ্যাঁ. ঠিক!

tr -s পুনরাবৃত্তি করা অক্ষরের উদাহরণগুলি একটি একক অক্ষরের সাথে প্রতিস্থাপন করে।

(ম্যান পেজের মাধ্যমে।)

সুতরাং, এটি এর মতো হয়:

এটি পরিবর্তন করে goodথেকে bddd। পুনরাবৃত্তি উদাহরণ 3 'ডি এর হয়।

সুতরাং এটি এই তিনটি দৃষ্টান্তকে একক দৃষ্টান্তের সাথে প্রতিস্থাপন করে।

এটিই এটি বিডি করে তোলে। :)


2
আমরা প্রতিটি উত্তর নিখুঁত হওয়ার আশা করি না, তবে সঠিক বানান, বিরামচিহ্ন এবং ব্যাকরণ সহ উত্তরগুলি পড়া সহজ।
আশিল্ডার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.