ইউনিক্সের বিশেষ অক্ষরের জন্য গ্রেপ


95

আমার একটি লগ ফাইল রয়েছে (অ্যাপ্লিকেশন.লগ) যা একাধিক লাইনে নিম্নলিখিত এবং সাধারণ অক্ষরের নিম্নলিখিত স্ট্রিং থাকতে পারে:

*^%Q&$*&^@$&*!^@$*&^&^*&^&

আমি লাইন নম্বর (গুলি) অনুসন্ধান করতে চাই যাতে এই বিশেষ অক্ষরের স্ট্রিং রয়েছে।

grep '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log

উপরের কমান্ডটি কোনও ফল দেয় না।

লাইন নম্বর পেতে সঠিক বাক্য গঠন কি হবে?


^@: মানে ^অনুসরণ করে @নাকি নুল চরিত্রটি?
নাহুয়েল ফিউইলুল

উত্তর:


159

বিকল্পটি grepব্যবহার করে আপনার ইনপুটটিকে স্থির স্ট্রিং হিসাবে গণ্য করতে বলুন -F

grep -F '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log

-nলাইন নম্বর পেতে বিকল্পের প্রয়োজন,

grep -Fn '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log

7
, Grep আপনি শুধুমাত্র অব্যাহতি (ক ব্যাকস্ল্যাশ সঙ্গে) প্রয়োজন সংস্করণটি নির্ভর করে ^, $, ., *এবং \ । অথবা fgrepআপনিও চেষ্টা করতে পারেন
নাহুয়েল ফিউইলুল

4
@ নাহুয়েলফুয়েলুল: +1। বিটিডব্লিউ, fgrepহিসাবে একই grep -F
যুবরাজ জন ওয়েসলি

@ প্রিন্স জোহান ওয়েসলি: এটি একই তবে কয়েকটি সিস্টেমে গ্রেপের অনেকগুলি সংস্করণ রয়েছে তাই fgrep ব্যবহার করে সংস্করণটি খুঁজে পেতে পারে যা
এফ

সে যদি ব্যবহার করে egrep '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log?
inckka

কাজ করে না। grep -rinF '-static'কপি করে প্রিন্ট Invalid option «t»। @ মণির উত্তরটি কাজ করেছিল , যেমন grep -rin "\-static"
হাই-অ্যাঞ্জেল

93

যে আমার পক্ষে কাজ করেছে সে হ'ল:

grep -e '->'

এর অর্থ হ'ল পরের যুক্তিটি হ'ল ধরণ, এবং আর্গুমেন্ট হিসাবে ব্যাখ্যা করা হবে না।

থেকে: http://www.linuxquestions.org/questions/programming-9/how-to-grep-for-string-769460/


str = '! "# $% & () * +, -। /:; <=>? @ [\] ^ _` {|} ~ '; প্রতিধ্বনি "$ আরআর" | গ্রেপ -ই "$ আরআর" ..... কাজ করছেন না, আপনার জন্য যা কাজ করেছে তাতে স্যুইচ চিহ্ন '-' ছাড়াও যথেষ্ট বিশেষ অক্ষর ছিল না, তবে -এর পরিবর্তে
উইন

4
কেবলমাত্র আমার জন্যই কাজ করে, এমনকি '\' বা -F বা fgrep কাজ করে না। ধন্যবাদ!
ব্যবহারকারী180574

4
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত - সহজ এবং
গ্রেপের

4
চেষ্টা করা - F এবং fgrep আমার জন্য কাজ করে না যখন স্ট্রিংটিতে '-' চর অন্তর্ভুক্ত থাকে searching এইটা কাজ করে.
知名 伟人

আমি ভাবছি কেন এই উত্তরটিতে এই উত্তরটি উপস্থিত রয়েছে ( stackoverflow.com/q/12387685 বর্তমানে আমি যে প্রশ্নোত্তর দেখেছি তার রেফারেন্সের জন্য) - সম্ভবত অন্য প্রশ্ন থেকে উত্তরগুলি মিশে যাওয়ার কোনও ভুল ক্ষেত্রে? শুরু হওয়া নিদর্শনগুলির সন্ধানের জন্য -, স্ট্যাকওভারফ্লো.com
জিজ্ঞাসাগুলি /

6

একটি সম্পর্কিত নোট

ক্যারেজ রিটার্নে গ্রেপ করার জন্য, যেমন \rচরিত্রটি, বা 0x0d, আমরা এটি করতে পারি:

grep -F $'\r' application.log

বিকল্পভাবে, পসিক্স সামঞ্জস্যের জন্য printfবা ব্যবহার করুনecho

grep -F "$(printf '\r')" application.log

এবং আমরা ব্যবহার করতে পারেন hexdump, অথবা lessকরার দেখতে ফলাফল:

$ printf "a\rb" | grep -F $'\r' | hexdump -c
0000000   a  \r   b  \n

$'\r'এবং অন্যান্য সমর্থিত অক্ষরগুলির ব্যবহার সম্পর্কে , বাশ ম্যানুয়াল> এএনএসআই-সি উদ্ধৃতি দেখুন :

ফর্মের শব্দগুলি 'স্ট্রিং' বিশেষভাবে চিকিত্সা করা হয়। শব্দটি স্ট্রিংয়ে প্রসারিত হয়, এএনএসআই সি স্ট্যান্ডার্ড অনুসারে ব্যাকস্ল্যাশ-পলায়নযুক্ত অক্ষর প্রতিস্থাপন করা হয়েছিল


3
grep -n "\*\^\%\Q\&\$\&\^\@\$\&\!\^\@\$\&\^\&\^\&\^\&" test.log
1:*^%Q&$&^@$&!^@$&^&^&^&
8:*^%Q&$&^@$&!^@$&^&^&^&
14:*^%Q&$&^@$&!^@$&^&^&^&

2

আপনি যে কোনও বর্ণানুক্রমিক অক্ষর এবং স্থান সরিয়ে চেষ্টা করতে পারেন। এবং তারপরে ব্যবহার -nআপনাকে লাইন নম্বর দেবে। নিম্নলিখিত চেষ্টা করুন:

grep -vn "^[a-zA-Z0-9 ]*$" application.log


ধন্যবাদ .. একটি ফাইলের বিশেষ অক্ষরগুলি খুঁজে পেতে আমার পক্ষে এটি ভাল কাজ করে।
দীপঙ্কর নলুই

-4

-B বিকল্পের সাহায্যে vi চেষ্টা করে দেখুন, এটি লাইন অক্ষরের বিশেষ প্রান্তটি দেখায় (আমি সাধারণত এটি ইউনিক্স ওএসের একটি টেক্সট ফাইলটিতে উইন্ডোজ লাইন শেষ দেখতে ব্যবহার করি)

তবে আপনি যদি কোনও স্ক্রিপ্টযুক্ত সমাধান চান তবে অবশ্যই vi কাজ করতে পারবেন না তাই আপনি গ্রেফ দিয়ে -f বা -e বিকল্পগুলি চেষ্টা করতে পারেন এবং ফলাফলটি সেড বা অ্যাজকে পাইপ করতে পারেন। গ্রেপ ম্যান পৃষ্ঠা থেকে:

ম্যাচার সিলেকশন -E, - এক্সটেন্ডেড-রেজিপ্স এক্সটেন্ডেড PATTERN বর্ধিত নিয়মিত অভিব্যক্তি হিসাবে (আগে, নীচে দেখুন)। (-ইটি পসিক্স দ্বারা নির্দিষ্ট করা আছে))

   -F, --fixed-strings
          Interpret PATTERN as a list of fixed strings, separated by newlines, any of which is to be matched.  (-F is specified
          by POSIX.)

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