গ্রেপ দ্বারা কীভাবে \ inter ব্যাখ্যা করা হচ্ছে?


12

আমি যখন লিখি

$ grep \$  

তারপরে আমি টার্মিনালে যা কিছু টাইপ করি তা টার্মিনালে মেলে এবং মুদ্রিত হয়। কীভাবে \$ব্যাখ্যা করা হচ্ছে?

উত্তর:


18

শেল ব্যাখ্যা করা হয় \$এবং, grep মাধ্যমে এটি ক্ষণস্থায়ী $, লাইন চরিত্র শেষে। সুতরাং আপনার লাইনের একটি সমাপ্তি ধরে নিয়েছে, এটি মিলবে :-)

আপনি যদি $গ্রেপ-তে কোনও বাস্তবের সাথে মিল রাখতে চান তবে এর মধ্যে একটি ব্যবহার করুন:

grep \\\$
grep '\$'

সাবেক সালে শেল ব্যাখ্যা \\হিসাবে \এবং \$হিসাবে $, দান \$। পরবর্তীকালে, এটি একেবারেই ব্যাখ্যা করে না।


আপনার প্রশ্নের প্রশ্নে কেন \$ডলারের চিহ্নের সাথে দ্বি-চরিত্রের ক্রমটি মিলে যায়, নিয়মিত অভিব্যক্তি grepকিছু উদ্দেশ্যে বিশেষ অক্ষর ব্যবহার করে। এর মধ্যে কয়েকটি হ'ল:

$       end of line
^       start of line
.       any character
+       1 or more of the preceeding pattern
*       0 or more of the preceeding pattern
{n,m}   between n and m of the preceeding pattern
[x-y]   any character between x and y (such as [0-9] for a digit).

অনেক অন্যান্য সহ।

আপনি যখন একটি লিটলার চরিত্রটিকে সাধারণত একটি বিশেষ চরিত্র হিসাবে বিবেচনা করেন তবে আপনি এটিকে এড়াতে হবে যাতে grepএটি স্বাভাবিক চরিত্র হিসাবে বিবেচনা করবে।


1
গ্রেপ কী দেখেছে তা পরীক্ষা করতে, চেষ্টা করুন echo \$এবং তারপরেecho \\$

গ্রেপ \\\ $-তে, যেমন আপনি বলেছিলেন, \ gre গ্রেপকে পাস করা হয়েছে সুতরাং এটির স্ট্রিংগুলির সাথে মিল থাকা উচিত match $, তবে কেন এটি স্ট্রিংগুলির সাথে মেলে যা কেবল একটি contain থাকে?

কারণ p ইন গ্রেপ মানে লাইনের সমাপ্তি। Character চরিত্রটি মেলানোর জন্য আপনাকে এড়াতে হবে যাতে গ্রেপ এটি বিশেষভাবে আচরণ করে না। আমার আপডেট দেখুন।

@ প্যাসি: ইকো নিজের শৃঙ্খলাবদ্ধ করে তোলে, এটি শেল বিল্টিন না পসিক্স অনুগত কিনা বা না ইত্যাদি ইত্যাদির উপর নির্ভর করে ব্যবহার করা ভাল ls \$এবং আমরা দেখতে পাচ্ছি যে "ls: $: এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই", এটি দেখতে যে \ un কে es এ অনস্কেপড করা হয়েছে তবে es \ কে es to এ থেকে আটকানো হয়েছে, এবং আরও কিছু।
হেনো

5

শেল প্রথম, প্রোগ্রাম আর্গুমেন্ট ক্ষণস্থায়ী আগে কোনো পালাবার ক্রম বিস্তৃতি তাই এটি ব্যাখ্যা করে \$এড়িয়ে যাওয়ার জন্য একটি ক্রম হিসাবে এবং একক যুক্তি পাসের $জন্য grepযা লাইনের শেষে ম্যাচ। যেহেতু প্রতিটি লাইনের একটি শেষ আছে, তারপরে যে কোনও লাইনের মিল থাকা উচিত :)


তবে লাইনের শেষটি কেমন? লাইনের শেষটি \ n হয় না?

2
@ হ্যাপি মিঠল: দেখুন man grep; এটা সিদ্ধান্ত নেওয়া হয়েছে যে হয়েছে $লাইনের শেষে ম্যাচ হোক বা না হোক লাইন দিয়ে আলাদা করা হয় নির্বিশেষে \n, \rউভয়, নাকি অন্যকিছু সম্পূর্ণরূপে পৃথক। সাধারণ ক্ষেত্রে, নিয়মিত এক্সপ্রেশনটি কোনও "স্ট্রিং" নয়, কোনও স্ট্রিংয়ের সাথে মেলে ব্যবহার করা যেতে পারে $এবং স্ট্রিংয়ের শেষের সাথে মেলে ব্যবহৃত হয়।

2

এটি শেষ-লাইন মেটাচার্যাক্টর হিসাবে ব্যাখ্যা করা হচ্ছে। আপনি যদি সত্যিকারের ডলারের চিহ্নটি মেলাতে চান তবে করুন

 $ grep \\$ 

অথবা

 $ grep '\$' 

1

^স্ট্রিং শুরু করার জন্য এবং $শেষের জন্য।

grep \$

অথবা

grep $

প্রতিটি স্ট্রিংয়ের সাথে মিলবে, তাই আপনার টাইপ করা যে কোনও কিছুই ফিরে আসবে।

চেষ্টা

grep a$

এখন কেবলমাত্র সেই স্ট্রিংগুলির aসাথে মিলিত হবে এবং প্রতিধ্বনিত হবে


1

$অক্ষর শ্রেণীর জন্য নিয়মিত অভিব্যক্তিটি ব্যবহার করে আপনি যদি আক্ষরিক অনুসন্ধান করতে চান তবে আপনি পালানোর ঝামেলা বাঁচাতে পারেন । উদাহরণ স্বরূপ,

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