মুদ্রণযোগ্য অক্ষরগুলির জন্য অনুসন্ধান করা হচ্ছে। TLDR; নির্বাহী সারসংক্ষেপ
- নিয়ন্ত্রণের অক্ষর এবং বর্ধিত ইউনিকোড অনুসন্ধান করুন
- স্থানীয় সেটিং উদাহরণস্বরূপ
LC_ALL=C
গ্রেপ তৈরি করার জন্য প্রয়োজনীয় যা আপনি বর্ধিত ইউনিকোড দিয়ে আশা করতে পারেন do
SO পছন্দসই অ-এস্কি চার সন্ধানকারী:
$ perl -ne 'print "$. $_" if m/[\x00-\x08\x0E-\x1F\x80-\xFF]/' notes_unicode_emoji_test
শীর্ষ উত্তরের হিসাবে, বিপরীত গ্রেপ:
$ grep --color='auto' -P -n "[^\x00-\x7F]" notes_unicode_emoji_test
শীর্ষ উত্তরে হিসাবে কিন্তু সাথে LC_ALL=C
:
$ LC_ALL=C grep --color='auto' -P -n "[\x80-\xFF]" notes_unicode_emoji_test
। । আরও । এই সম্পর্কে উদ্দীপক বিস্তারিত:। । ।
আমি মন্তব্যগুলিতে উপরে থাকা হার্ভির সাথে একমত , এটি মুদ্রণযোগ্য অক্ষরগুলির সন্ধান করা প্রায়শই বেশি কার্যকর বা যখন আপনার সত্যিকারের অ-মুদ্রণযোগ্য চিন্তা করা উচিত তখন এটি অ-এসসিআইআই মনে করা সহজ। হার্ভে পরামর্শ দিয়েছেন "এটি ব্যবহার করুন:" [^\n -~]
"। ডস পাঠ্য ফাইলগুলির জন্য Add আর যোগ করুন That এটি" [^\x0A\x020-\x07E]
" এ অনুবাদ করে এবং সিআর জন্য \ x0D যোগ করে"
এছাড়াও, গ্রেডের সাথে -c (প্যাটার্নগুলির সাথে মিলিত গণনা দেখানো) প্রিন্টযোগ্য অক্ষরের জন্য অনুসন্ধান করার সময় দরকারী কারণ স্ট্রিংগুলির সাথে মেলে টার্মিনালটি বিশৃঙ্খলা করতে পারে।
আমি 0-8 এবং 0x0e-0x1f (0x80-0xff পরিসীমাতে) যোগ করার সন্ধান পেয়েছি এটি একটি দরকারী ধরণ। এটি ট্যাব, সিআর এবং এলএফ এবং আরও একটি বা দুটি অস্বাভাবিক মুদ্রণযোগ্য অক্ষর বাদ দেয়। সুতরাং আইএমএইচও বেশ কার্যকর (যদিও অপরিশোধিত) গ্রেপ প্যাটার্ন এটি হ'ল:
grep -c -P -n "[\x00-\x08\x0E-\x1F\x80-\xFF]" *
আসলে, সাধারণত আপনার এটি করতে হবে:
LC_ALL=C grep -c -P -n "[\x00-\x08\x0E-\x1F\x80-\xFF]" *
ভাঙ্গন:
LC_ALL=C - set locale to C, otherwise many extended chars will not match (even though they look like they are encoded > 0x80)
\x00-\x08 - non-printable control chars 0 - 7 decimal
\x0E-\x1F - more non-printable control chars 14 - 31 decimal
\x80-1xFF - non-printable chars > 128 decimal
-c - print count of matching lines instead of lines
-P - perl style regexps
Instead of -c you may prefer to use -n (and optionally -b) or -l
-n, --line-number
-b, --byte-offset
-l, --files-with-matches
উদাহরণস্বরূপ ব্যবহারের ব্যবহারিক উদাহরণ বর্তমান ডিরেক্টরিতে সমস্ত ফাইল গ্রেপ করতে সন্ধান করে:
LC_ALL=C find . -type f -exec grep -c -P -n "[\x00-\x08\x0E-\x1F\x80-\xFF]" {} +
আপনি সময়ে গ্রেপ সামঞ্জস্য করতে ইচ্ছুক হতে পারে। যেমন বিএস (0x08 - ব্যাকস্পেস) চর কিছু মুদ্রণযোগ্য ফাইলে বা ভিটি (0x0B - উল্লম্ব ট্যাব) বাদ দিতে ব্যবহৃত হয় used বিইএল (0x07) এবং ইএসসি (0x1 বি) চরগুলিও কিছু ক্ষেত্রে মুদ্রণযোগ্য হিসাবে বিবেচিত হতে পারে।
Non-Printable ASCII Chars
** marks PRINTABLE but CONTROL chars that is useful to exclude sometimes
Dec Hex Ctrl Char description Dec Hex Ctrl Char description
0 00 ^@ NULL 16 10 ^P DATA LINK ESCAPE (DLE)
1 01 ^A START OF HEADING (SOH) 17 11 ^Q DEVICE CONTROL 1 (DC1)
2 02 ^B START OF TEXT (STX) 18 12 ^R DEVICE CONTROL 2 (DC2)
3 03 ^C END OF TEXT (ETX) 19 13 ^S DEVICE CONTROL 3 (DC3)
4 04 ^D END OF TRANSMISSION (EOT) 20 14 ^T DEVICE CONTROL 4 (DC4)
5 05 ^E END OF QUERY (ENQ) 21 15 ^U NEGATIVE ACKNOWLEDGEMENT (NAK)
6 06 ^F ACKNOWLEDGE (ACK) 22 16 ^V SYNCHRONIZE (SYN)
7 07 ^G BEEP (BEL) 23 17 ^W END OF TRANSMISSION BLOCK (ETB)
8 08 ^H BACKSPACE (BS)** 24 18 ^X CANCEL (CAN)
9 09 ^I HORIZONTAL TAB (HT)** 25 19 ^Y END OF MEDIUM (EM)
10 0A ^J LINE FEED (LF)** 26 1A ^Z SUBSTITUTE (SUB)
11 0B ^K VERTICAL TAB (VT)** 27 1B ^[ ESCAPE (ESC)
12 0C ^L FF (FORM FEED)** 28 1C ^\ FILE SEPARATOR (FS) RIGHT ARROW
13 0D ^M CR (CARRIAGE RETURN)** 29 1D ^] GROUP SEPARATOR (GS) LEFT ARROW
14 0E ^N SO (SHIFT OUT) 30 1E ^^ RECORD SEPARATOR (RS) UP ARROW
15 0F ^O SI (SHIFT IN) 31 1F ^_ UNIT SEPARATOR (US) DOWN ARROW
আপডেট: আমাকে সম্প্রতি এটি পুনরায় দেখতে হয়েছিল। এবং, YYMV টার্মিনাল সেটিংস / সৌর আবহাওয়ার পূর্বাভাস BUT এর উপর নির্ভর করে। । আমি লক্ষ্য করেছি যে গ্রেপ অনেকগুলি ইউনিকোড বা বর্ধিত অক্ষর খুঁজে পাচ্ছে না। যদিও স্বজ্ঞাতভাবে তাদের 0x80 থেকে 0xff এর পরিসীমা মিলানো উচিত, 3 এবং 4 বাইট ইউনিকোড অক্ষর মেলেনি। ??? কেউ কি এই ব্যাখ্যা করতে পারেন? হ্যাঁ. @ ফ্রেবজৌস জিজ্ঞাসা করেছেন এবং @ ক্যালান্ডোয়া ব্যাখ্যা করেছেন যে গ্রেপ LC_ALL=C
ম্যাচ করার জন্য কমান্ডের জন্য লোকেল সেট করতে ব্যবহার করা উচিত।
যেমন আমার লোকাল LC_ALL=
খালি
$ locale
LANG=en_IE.UTF-8
LC_CTYPE="en_IE.UTF-8"
.
.
LC_ALL=
সঙ্গে, grep LC_ALL=
খালি ম্যাচ 2 বাইট এনকোড অক্ষর কিন্তু 3 এবং 4 বাইট এনকোড:
$ grep -P -n "[\x00-\x08\x0E-\x1F\x80-\xFF]" notes_unicode_emoji_test
5:© copyright c2a9
7:call underscore c2a0
9:CTRL
31:5 © copyright
32:7 call underscore
গ্রেপ এর সাথে LC_ALL=C
আপনি যে সমস্ত বর্ধিত অক্ষর চান তা মেলে বলে মনে হচ্ছে:
$ LC_ALL=C grep --color='auto' -P -n "[\x80-\xFF]" notes_unicode_emoji_test
1:���� unicode dashes e28090
3:��� Heart With Arrow Emoji - Emojipedia == UTF8? f09f9298
5:� copyright c2a9
7:call� underscore c2a0
11:LIVE��E! ���������� ���� ���������� ���� �� �� ���� ���� YEOW, mix of japanese and chars from other e38182 e38184 . . e0a487
29:1 ���� unicode dashes
30:3 ��� Heart With Arrow Emoji - Emojipedia == UTF8 e28090
31:5 � copyright
32:7 call� underscore
33:11 LIVE��E! ���������� ���� ���������� ���� �� �� ���� ���� YEOW, mix of japanese and chars from other
34:52 LIVE��E! ���������� ���� ���������� ���� �� �� ���� ���� YEOW, mix of japanese and chars from other
81:LIVE��E! ���������� ���� ���������� ���� �� �� ���� ���� YEOW, mix of japanese and chars from other
এই পার্ল ম্যাচটি (আংশিকভাবে স্ট্যাকওভারফ্লোতে অন্য কোথাও পাওয়া যায়) বা উপরের উত্তরের বিপরীত গ্রাপ লোকাল নির্ধারণ না করে সমস্ত "অদ্ভুত" এবং "বিস্ময়কর" "অ-অ্যাসিআই" অক্ষর খুঁজে পেয়েছে বলে মনে হচ্ছে:
$ grep --color='auto' -P -n "[^\x00-\x7F]" notes_unicode_emoji_test
$ perl -ne 'print "$. $_" if m/[\x00-\x08\x0E-\x1F\x80-\xFF]/' notes_unicode_emoji_test
1 ‐‐ unicode dashes e28090
3 💘 Heart With Arrow Emoji - Emojipedia == UTF8? f09f9298
5 © copyright c2a9
7 call underscore c2a0
9 CTRL-H CHARS URK URK URK
11 LIVE‐E! あいうえお かが アイウエオ カガ ᚊ ᚋ ซฌ आइ YEOW, mix of japanese and chars from other e38182 e38184 . . e0a487
29 1 ‐‐ unicode dashes
30 3 💘 Heart With Arrow Emoji - Emojipedia == UTF8 e28090
31 5 © copyright
32 7 call underscore
33 11 LIVE‐E! あいうえお かが アイウエオ カガ ᚊ ᚋ ซฌ आइ YEOW, mix of japanese and chars from other
34 52 LIVE‐E! あいうえお かが アイウエオ カガ ᚊ ᚋ ซฌ आइ YEOW, mix of japanese and chars from other
73 LIVE‐E! あいうえお かが アイウエオ カガ ᚊ ᚋ ซฌ आइ YEOW, mix of japanese and chars from other
SO পছন্দসই অ-এস্কি চার সন্ধানকারী:
$ perl -ne 'print "$. $_" if m/[\x00-\x08\x0E-\x1F\x80-\xFF]/' notes_unicode_emoji_test
শীর্ষ উত্তরের হিসাবে, বিপরীত গ্রেপ:
$ grep --color='auto' -P -n "[^\x00-\x7F]" notes_unicode_emoji_test
শীর্ষ উত্তরে হিসাবে কিন্তু সাথে LC_ALL=C
:
$ LC_ALL=C grep --color='auto' -P -n "[\x80-\xFF]" notes_unicode_emoji_test