কিভাবে একটি লেখার মধ্যে একটি জায়গা খুঁজে পেতে। গ্রেপ ব্যবহার করছেন?


13

পাঠ্য এক স্থান গ্রেপ কিভাবে?

cat a.txt| grep ' '

অথবা

cat a.txt| grep '\s '

7
catউভয় ক্ষেত্রে অকৃত্রিম ব্যবহার । প্রথমটি লেখা যেতে পারে grep ' ' a.txt, দ্বিতীয়টি একইভাবে পরিবর্তিত হয়েছিল।
ম্যাডহ্যাটার

1
মনে রাখবেন যে \sট্যাব, রিটার্ন, উল্লম্ব ট্যাব, ফর্ম ফিড এবং প্রযুক্তিগতভাবে নতুন লাইনের সাথেও মেলে। আপনি যদি কেবল স্থান এবং ট্যাবের সাথে মিল রাখতে চান তবে [[:blank:]]বা ব্যবহার করুন [ \t]
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

gnu গ্রেপ ব্যবহার করে, আপনি -mএকের সাথে ম্যাচের সংখ্যা ( বিকল্প) সীমাবদ্ধ করতে পারেন ...
সেন্ডমোরিনফো

এটি আরও সহজ egrep "\ s" a.txt

উত্তর:


6

আপনি আপনার প্রশ্নে যেমন লিখছেন ঠিক তেমন একটি জায়গার জন্য যদি আপনি গ্রেপ করতে চান তবে আপনি এমন কিছু ব্যবহার করতে পারেন:

grep -e '^\s[^\s]' -e '[^\s]\s$' -e '[^\s]\s[^\s]' a.txt

বা পসিক্স ভেরিয়েন্টগুলির জন্য:

grep -e '^ [^ ]' -e '[^ ] $' -e '[^ ] [^ ]' a.txt

বা কম পঠনযোগ্য POSIX বৈকল্পিক:

grep '\(^\|[^ ]\)\ \([^ ]\|$)' a.txt

ধরে নিই যে আপনি একাধিক সংলগ্ন স্থান যুক্ত রেখাগুলি বাদ দিতে চান, এর জন্য স্পষ্টতই একটি স্থান থাকতে হবে, কোনও স্থান আগে নয় এবং কোনও স্থান অনুসরণ করবে না।

এছাড়াও, এটি লক্ষ্য করার মতো বিষয় যে গ্রেপ সমর্থন করে না সমস্ত সংস্করণই নিয়মিত অভিব্যক্তি নিয়ন্ত্রণ করে।


1
আপনি সর্বশেষ উদাহরণ থেকে এই সমস্ত ব্যাকস্ল্যাশগুলি বাদ দিতে পারেন এবং POSIX- নির্দিষ্ট -Eবিকল্পটি ব্যবহার করে পাঠযোগ্যতা উন্নত করতে পারেন যা প্রসারিত রেজেক্সগুলি সক্ষম করে। grep -E '(^|[^ ]) ([^ ]|$)' a.txtযাই হোক না কেন, জায়গার প্রয়োজন না হওয়ার আগে ব্যাকস্ল্যাশ এবং চূড়ান্ত সমাপনী বন্ধনীর আগে একটি অনুপস্থিত। এছাড়াও, এর সংস্করণের জন্য grepবুঝতে \s, আপনি অ স্পেসের জন্য অভিব্যক্তি খাটো করতে পারেন [^\s]থেকে\S
পরবর্তী ঘোষণা না হওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

তবে এটি খুব কার্যকর হয়, [[: ফাঁকা:]]
ইমাস

4

আমি মনে করি এটি আমি পেয়েছি:

grep  "\+[[:space:]]\+" a.xml

1

ভেরিয়েন্ট 2 কেবলমাত্র দুটি স্থান খুঁজে পাবে। আপনি যদি '\s'পরিবর্তে ব্যবহার করেন তবে উভয় রূপই কাজ করবে।

আপনি সহজেই এটি পরীক্ষা করতে পারেন, তবে আপনার আসল প্রশ্নটি কী?


1
কেন কেবল দুটি স্থান খুঁজে পাবে? আমি মনে করি এটি কোনও জায়গার সাথে মেলে।
cuonglm

1
@ জ্নোক: ভেরিয়েন্ট ২ তিনি যেমন ক্রুটি করেন তখন এটি '\s 'কমপক্ষে কমপক্ষে দুটি স্পেসের সাথে মিলবে, কারণ তিনি চরিত্রের গ্রুপের পরে একটি স্পেস ক্যারেক্টার যুক্ত করেছেন \s
সোভেন

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