फ़ाइल:
O000000667520994000000074720121112000000N^@^@^@
मैंने नीचे कमांड का उपयोग किया है लेकिन यह काम नहीं करता है।
grep "^@^@^@" *
फ़ाइल:
O000000667520994000000074720121112000000N^@^@^@
मैंने नीचे कमांड का उपयोग किया है लेकिन यह काम नहीं करता है।
grep "^@^@^@" *
जवाबों:
आप किसी भी वर्ण के लिए नियंत्रण सहित / गैर-मुद्रण योग्य वर्णों को perl-regexp मोड (-पी) में उसके xx कोड द्वारा देख सकते हैं:
grep -Pa '\x00' ...
grep -Pv '\x00' file
-a
(कभी-कभी?) पैटर्न भी नहीं मिलता है। धन्यवाद! साथ ही @pbies की मदद कर सकते हैं।
^@
एक कैरेट ^
और एट-साइन नहीं है @
, यह एक चरित्र है। यह है कि कुछ प्रोग्राम NUL चरित्र- ASCII मान 0 को कैसे प्रदर्शित करते हैं, इसे \0
C के रूप में भी जाना जाता है।
यहाँ मैंने एक NUL बाइट के साथ एक फाइल बनाई है। Use ध्यान दें कि मैं cat -v
गैर-मुद्रण वर्ण दिखाने के लिए उपयोग करता हूं ।
$ cat -v blah
hello
null^@
hi
$ hexdump -C blah
00000000 68 65 6c 6c 6f 0a 6e 75 6c 6c 00 0a 68 69 0a |hello.null..hi.|
0000000f
सी। सैप में स्ट्रिंग्स को समाप्त करने के लिए उपयोग किए जाने के बाद से ग्रेप को एनयूएल को खोजने में परेशानी होती है, हालांकि, यह काम कर सकता है:
$ sed -n '/\x0/p' blah
null
$ sed -n '/\x0/p' blah | cat -v
null^@
† में vi, सम्मिलित मोड प्रेस में Ctrl- V, Ctrl- Shift- @एक अशक्त बाइट डालने के लिए।
बैश में आप विशेष वर्ण जोड़ सकते हैं जब C-q
या के साथ उपसर्ग किया जाता है C-v
। तो आप कर सकते हैं, उदाहरण के लिए
grep 'Ctrl-vCtrl-a' file.txt
खोज स्ट्रिंग के रूप में पढ़ा जाना चाहिए control key
+ character v
, द्वारा पीछा control key
+ character a
, जो ASCII मूल्य एसओएच (01) के लिए खोज करता है। दुर्भाग्य से यह एनयूएल चरित्र के लिए काम नहीं करता है।
^ @ एनयूएल चरित्र है। आप अपनी फ़ाइलों की पंक्तियों के साथ क्या करना चाहते हैं?
आप /programming/2398393/identifying-and-removing-null-characters-in-unix पर एक नज़र डाल सकते हैं जो एक समान मुद्दे से संबंधित है।
चरित्र ^ @ एनयूएल चार है, इसलिए मुझे डर है कि इसे सीधे नहीं पकड़ा जा सकता है।
आपका सबसे अच्छा विकल्प शायद एक साधारण प्रोग्राम लिखना होगा जो बाइट्स के इस क्रम को खोजता है।
वैकल्पिक रूप से आप इसे हेक्साडेसिमल डंप (और od
, xxd
या तो) के कुछ रूप में बदलने की कोशिश कर सकते हैं और इसके आउटपुट में grep कर सकते हैं। लेकिन स्पष्ट रूप से, यह सही पाने के लिए मुश्किल होगा।
-a
विकल्प जोड़ना चाह सकते हैं , अन्यथाgrep
सोचता है कि यह बाइनरी डेटा है और मिलान लाइनों को प्रदर्शित नहीं करेगा।