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


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.