গ্রেপ: পিছনে পিছনে


23

আমি এর জন্য একটি গ্রেপ করতে চাই \resources\। আমি এটা কিভাবে করবো?

আমি চেষ্টা করেছিলাম:

grep \resources\
grep \\resources\\
grep "\resources\"
grep "\\resources\\"

এগুলির কোনওটিই কাজ করে না


5
ব্যাকস্ল্যাশগুলির ব্যাশের ব্যাখ্যা এড়াতে ডাবল কোটের পরিবর্তে একক উদ্ধৃতি ব্যবহার করুন। grep '\\resources\\'
পল টমলিন

উত্তর:


27

ব্যাকস্ল্যাশ অনেক অ্যাপ্লিকেশনগুলির জন্য একটি বিশেষ চরিত্র:

  • শেল সহ: আপনাকে অন্য ব্যাকস্ল্যাশ বা আরও মার্জিতভাবে ব্যবহার করে এড়াতে হবে, যখন সম্ভব হবে তখন একক উদ্ধৃতি ব্যবহার করুন :

    $ printf '%s\n' foo\\bar 'foo\bar'
    foo\bar
    foo\bar
    

    এখানে কমান্ড দুটি মান সহ দুটি আর্গুমেন্ট পেয়েছে foo\bar, যা টার্মিনালের সাথে প্রতিধ্বনিত হয়েছিল।

    (উপরে, আমি অনেকগুলি প্রয়োগের printfপরিবর্তে ব্যাকস্ল্যাশের নিজস্ব ব্যাখ্যাও করি (এখানে একটি ব্যাকস্পেসের চরিত্রের প্রসারিত হবে ))।echoecho\b

  • তবে ব্যাকস্ল্যাশও এর জন্য একটি বিশেষ চরিত্র grep। এই কমান্ডের মত অনেক বিশেষ সিকোয়েন্স স্বীকার \(, \|, \., ইত্যাদি। একইভাবে আপনাকে \\আসল ব্যাকস্ল্যাশ অক্ষরের জন্য ডাবল সহ গ্রেপ খাওয়াতে হবে । এর অর্থ হ'ল শেলটি ব্যবহার করে আপনার টাইপ করতে হবে:

    grep 'foo\\bar'
    

    বা সমতুল্য:

    grep foo\\\\bar
    

    (উভয় লাইন শেলকে foo\\barআর্গুমেন্ট হিসাবে প্রেরণ করতে বলে grep)।

  • অন্যান্য অনেক কমান্ড তাদের যুক্তিগুলির মধ্যে ব্যাকস্ল্যাশ ব্যাখ্যা করে ... এবং দুটি স্তরের পলায়নের প্রয়োজন হয় (একটি শেলের ব্যাখ্যা থেকে বাঁচার জন্য, একটি কমান্ডের ব্যাখ্যা থেকে বেরিয়ে আসার জন্য)।


যাইহোক, শেলটির জন্য, একক উদ্ধৃতিগুলি '…'কোনও ধরণের চরিত্রের ব্যাখ্যার প্রতিরোধ করে, তবে ডাবল উদ্ধৃতিগুলি কেবল তাদের কয়েকটিকে প্রতিরোধ করে: বিশেষত $, `এবং এর \মধ্যে সক্রিয় চরিত্রগুলি থেকে যায় "…"


18

এছাড়াও আপনি ব্যবহার করতে পারেন fgrep(যা ঠিক হয় grepসঙ্গে -Fপতাকা)। এটি গ্রেপকে একটি নির্দিষ্ট স্ট্রিং হিসাবে প্যাটার্নটি ব্যাখ্যা করতে বাধ্য করে (যেমন এটি \একটি আক্ষরিক হিসাবে বিবেচনা করবে \)। আপনাকে এখনও শেল দ্বারা প্রসারিত হওয়া থেকে ব্যাকস্ল্যাশগুলি রক্ষা করতে হবে।

grep -F '\resources\'

পতাকা আছে সেখানে! আমি গ্রেপ করার চেষ্টা করছিলাম ..\এবং এমনকি '..\\'আমি যে ফলাফল চাইছিলাম তা পেলাম না। grep -F '..\'আমি যা চেয়েছিলাম তা পেয়েছি! ধন্যবাদ
ফ্রিসফটওয়্যার সার্ভার

.. সেই মন্তব্যটি সঠিকভাবে বিন্যাস করার চেষ্টা করুন! -> meta.stackexchange.com/questions/201663/...
FreeSoftwareServers

3

grepএকটি ব্যাকস্ল্যাশ উপস্থাপনের জন্য চারটি ব্যাকস্ল্যাশ প্রয়োজন :

grep "\\\\resources\\\\"

12
এটি বরং একটি বিভ্রান্তিকর ওভারসম্প্লিফিকেশন। grepঅন্য ব্যাকস্ল্যাশ থেকে বাঁচতে কেবল 1 টি ব্যাকস্ল্যাশ প্রয়োজন, তবে শেলের জন্যও ব্যাকস্ল্যাশ উদ্ধৃত করা প্রয়োজন। ডাবল উদ্ধৃতি ( ") ব্যাকস্ল্যাশগুলি উদ্ধৃত করবেন না, তবে ব্যাকস্ল্যাশ করে, তাই আপনার উদাহরণে ডাবল উদ্ধৃতিগুলি কিছুই করে না এবং পরিবর্তে 4 ব্যাকস্ল্যাশগুলির প্রয়োজন।
jw013

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