"#" বা ";" দিয়ে শুরু না হওয়া গ্রেপগুলি কীভাবে করবেন?


78

আমি গ্রেপ করে smb.confদেখতে চাই এবং কেবল মন্তব্য করা হয়নি এমন লাইনগুলি দেখতে চাই ।


1
testparmএই প্রদর্শন ডিফল্ট মান হিসাবে এটি আরও ভাল করুন।
— এফ। হাউরি

@ এফ.হৌরি আপনাকে ধন্যবাদ এটা পাশাপাশি কাজ করছে। তবে এটি কিছু অপ্রয়োজনীয় (আমার ক্ষেত্রে) তথ্যও তৈরি করে, যা গ্রেপ্তার করা উচিত ...
— অস্বীকার


PCRE, grep মাধ্যমে আরেকটি উপায় stackoverflow.com/a/45917459/3297613
— অবিনাশ রাজ

উত্তর:


125
grep "^[^#;]" smb.conf

প্রথমটি ^রেখার শুরুটিকে বোঝায়, সুতরাং প্রথম অক্ষরের পরে মন্তব্যগুলির সাথে শুরু হওয়া লাইনগুলি বাদ দেওয়া হবে না। [^#;]মানে এমন কোনও চরিত্র যা নয় #বা হয় ;।

অন্য কথায়, এটা লাইন যে কোনো চরিত্র ছাড়া অন্য দিয়ে শুরু রিপোর্ট #এবং ;। এটি যে লাইনগুলি শুরু হয় না #এবং ;(যার জন্য আপনি ব্যবহার করতে চান grep -v '^[#;]') সেগুলি রিপোর্ট করার মতো নয় যে এটি খালি লাইনও বাদ দেয় না , তবে এই ক্ষেত্রে সম্ভবত এটিই পছন্দনীয় যেহেতু আমি সন্দেহ করি যে আপনি খালি রেখাগুলি সম্পর্কে যত্নশীল।

আপনি যদি শীর্ষস্থানীয় ফাঁকা অক্ষরগুলি উপেক্ষা করতে চান, আপনি এটি এতে পরিবর্তন করতে পারেন:

grep '^[[:blank:]]*[^[:blank:]#;]' smb.conf

অথবা

grep -vxE '[[:blank:]]*([#;].*)?' smb.conf

অথবা

awk '$1 ~ /^[^;#]/' smb.conf

সঠিক উত্তরটি হল: cat /etc/samba/smb.conf | grep ^[^#\;]তবে যাইহোক আপনাকে ধন্যবাদ
— অস্বীকার করুন

হ্যাঁ, বা আপনি "উদ্ধৃতি" ব্যবহার করতে পারেন; আমি পরবর্তীকালে এটি সম্পাদনা করেছি।
— সোনারলোক

7
@ এডিনিস আপনি ভুল: সোনারলকসের প্রতিক্রিয়া আপনার চেয়ে খারাপ নয়। .1 দয়া করে cat ...| সিনট্যাক্স ব্যবহার এড়িয়ে চলুন ! .2 খালি লাইন এবং কেবল স্থান সম্বলিত লাইনগুলিকে চাবুক দেওয়ার জন্য, মন্তব্যগুলির সাহায্যে আপনি এটি ব্যবহার করতে পারেন:grep -v "^ *\(#.*\|\)$" < smb.conf
— এফ। হাউরি

7
@ ইমানুয়েলবার্গ এটি একটি অকেজো কাঁটাচামচ। cat file | grep "blah"ফিফিলোর মধ্য দিয়ে দুটি বাইনারি চালিয়ে যাওয়ার অনুরোধ করুন , grep "blah" <fileঠিক একই কাজ করুন এবং file প্রাকৃতিকভাবে গ্রেপের সাথে আবদ্ধ হনSTDIN । [বাশ] অকেজো বিড়াল কোনও অনুসন্ধান ইঞ্জিনের মাধ্যমে অনুসন্ধানের সম্পূর্ণ বৈশিষ্ট্যযুক্ত বিষয়! -> blog.sanctum.geek.nz/useless-use-of-cat ... নমুনার জন্য
— এফ। হাউরি

2
তা করে না ঠিক একই । এটি 2 টি প্রক্রিয়া এবং একটি পাইপ তৈরি করে যেখানে 1 প্রক্রিয়া যথেষ্ট। @ এফ.হৌরির শেষ মন্তব্যে প্রদত্ত লিঙ্কটি পড়ুন।
— রাহমু

4

ভিম সমাধান:

:v/^\s*[#\n]/p

আমি নিজেই ভিএম সলিউশনটি সন্ধান করার সময় এই প্রশ্নটি ঘুরে দেখলাম।


1
এটি ফাঁকা দিয়ে শুরু হওয়া লাইনগুলিও মুছবে।
— কুসালানন্দ

সত্য। আমি মন্তব্যগুলির মধ্যে লাইন হিসাবে কনফিগার ফাইলগুলির জন্য দরকারী বলে মনে করি অন্যথায় আউটপুট পূরণ করে। আপনি যদি ফাঁকা লাইন রাখতে চান তবে *এটি +পছন্দ করুন:v/^\s+[#\n]/p
— ডেভিড লর্ড

3

অলিভার ন্যাডজের উত্তরে গ্রেপ করার পাইপটি (জিএনইউ grepবা সামঞ্জস্যজনক) ধরে ফেলেছে :

grep -v "^\s*[#\;]\|^\s*$" <some_conf_file>

দ্বিতীয় গ্রেপ আই @ নডজ-এর অকেজো মনে হচ্ছে, @ সোনারলকসের জবাব ইওয়ের চেয়ে বেশি ছিল।
— আরচেমার

1
আমি স্বীকার করি যে সোনারিলকসের উত্তরটি সঠিক ছিল। তবে, আমি খালি লাইন না দেখানোও এটি দরকারী বলে বিবেচনা করেছি।
— মর্টেন লিন্ড

2
grep -v "^\s*[#;]" any.conf | grep -v "^\s*$"

এটাই আমার পক্ষে কাজ করে। মন্তব্য করা বা খালি রেখাগুলি, এমনকি হ্যাশ চিহ্ন বা সেমিকোলনের আগে শ্বেত স্পেস উপেক্ষা করুন


2

এই উদাহরণগুলি মানুষের কাজে লাগতে পারে।

[user@host tmp]$ cat whitespacetest
# Line 1 is a comment with hash symbol as first char

# Line 2 is a comment with hash symbol as second char
  # Line 3 is a comment with hash symbol as third char
        # Line 4 is a comment with tab first, then hash
        ; Line 5 is a comment with tab first, then semicolon. Comment char is ;
; Line 6 is a comment with semicolon symbol as first char
[user@host tmp]$

প্রথম গ্রেপ উদাহরণটি হ্যাশ প্রতীক দ্বারা অনুসরণ করা কোনও পরিমাণ শ্বেতস্পেসের সাথে শুরু লাইনগুলি বাদ দেয়।

[user@host tmp]$ grep -v '^[[:space:]]*#' whitespacetest

        ; Line 5 is a comment with tab first, then semicolon. Comment char is ;
; Line 6 is a comment with semicolon symbol as first char
[user@host tmp]$

দ্বিতীয়টি হ্যাশ প্রতীক বা সেমিকোলন অনুসরণ করে কোনও পরিমাণ শ্বেত স্পেস দিয়ে শুরু হওয়া লাইনগুলি বাদ দেয়।

[user@host tmp]$ grep -v '^[[:space:]]*[#;]' whitespacetest

[user@host tmp]$

0

এখানে আমি আরও ভাল পেয়েছি (জিএনইউ grepবা সামঞ্জস্য ধরে ):

grep -v '^[#;/%<]\|^\s*$' anyfile.conf

#;/%<বর্গাকার বন্ধনীতে শুরু হওয়া লাইনের জন্য বাদ দিন এবং পাইপের পরে দ্বিতীয় ফিল্টারটি \s*$ফাঁকা লাইনের জন্য।


2
কোন ধরণের কনফি ফাইলগুলিতে <বা /মন্তব্যের জন্য ব্যবহার করা হয়? আমি অনেকগুলি কনফ ফাইল ফর্ম্যাট জানি যেখানে <সব কিছুই মন্তব্য ছাড়া but !কখনও কখনও এক্স রিসোর্স ফাইলগুলির মতো ব্যবহৃত হয়।
— স্টাফেন চেজেলাস

-1
grep -v '^$\|^\s*#' temp

এটি কারও অনেক ভাল, আমি এটি https://stackoverflow.com/questions/17392869/how-to-print-a-file-excluding-comments-and-blank-lines-using-grep-sed থেকে পেয়েছি

এটি জিএনইউ grepবা সামঞ্জস্যপূর্ণ বলে ধরে নেয় ।


প্রশ্নটি এমন ;মন্তব্য হিসাবে শুরু করা লাইনগুলিও বিবেচনা করে যা সরানো উচিত।
— কুসালানন্দ


-3

এটি দিয়ে শুরু হওয়া লাইনগুলি ছাড়াই আপনাকে ফাইলটি প্রদর্শন করা উচিত #: grep -v "^#" filename


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