grep
একটি পাঠ্য প্রক্রিয়াজাতকরণ সরঞ্জাম। এটি তাদের ইনপুটটি পাঠ্য ফাইল হিসাবে প্রত্যাশা করে । দেখে মনে হচ্ছে tr
এটি ম্যাকোস- এ একই রকম হয় (যদিও tr
বাইনারি ফাইলগুলি সমর্থন করার কথা মনে করা হয়)।
কম্পিউটারগুলি বাইটের ক্রম হিসাবে ডেটা সঞ্চয় করে । একটি পাঠ্য হ'ল অক্ষরের ক্রম। বাইট হিসাবে অক্ষরগুলি এনকোড করার বিভিন্ন উপায় রয়েছে, যা অক্ষর এনকোডিংস বলে । বিশ্বের বেশিরভাগ ক্ষেত্রে বিশেষত ওএসএক্স - এ ডি-ফ্যাক্টো স্ট্যান্ডার্ড চরিত্রের এনকোডিংটি ইউটিএফ -8 , যা ইউনিকোড অক্ষর সেটের জন্য একটি এনকোডিং । কেবলমাত্র 256 টি সম্ভাব্য বাইট রয়েছে তবে মিলিয়ন ইউনিকোডের বেশি অক্ষর রয়েছে তাই বেশিরভাগ অক্ষর একাধিক বাইট হিসাবে এনকোড করা থাকে। ইউটিএফ -8 একটি পরিবর্তনশীল দৈর্ঘ্যের এনকোডিং: চরিত্রের উপর নির্ভর করে, একটি অক্ষর এনকোড করতে এক থেকে চার বাইট লাগতে পারে। বাইটের কিছু সিকোয়েন্স ইউটিএফ -8 এর কোনও অক্ষরকে উপস্থাপন করে না। সুতরাং, বাইটের ক্রম রয়েছে যা বৈধ ইউটিএফ -8 পাঠ্য ফাইল নয়।
tr
এটি অভিযোগ করছে কারণ এটি এমন একটি বাইট ক্রমের মুখোমুখি হয়েছিল। এটি ইউটিএফ -8 এ এনকোডযুক্ত একটি পাঠ্য ফাইলটি দেখতে প্রত্যাশা করে তবে এটি বাইনারি ডেটা দেখে যা বৈধ ইউটিএফ -8 নয়।
মাইক্রোসফ্ট ওয়ার্ড নথি কোনও পাঠ্য ফাইল নয়: এটি একটি ওয়ার্ড প্রসেসিং ডকুমেন্ট। ওয়ার্ড প্রসেসিং ডকুমেন্ট ফর্ম্যাটগুলি কেবল টেক্সটকেই এনকোড করে না, তবে ফর্ম্যাটিং, এম্বেড করা চিত্র ইত্যাদি The
আপনি লোকেল পরিবর্তন করে বাইট চালনাতে পাঠ্য প্রক্রিয়াজাতকরণ সরঞ্জামকে নির্দেশ দিতে পারেন । বিশেষত, "সি" স্থানীয় নির্বাচন করুন, যার মূল অর্থ "কিছুই অভিনব নয়"। কমান্ড লাইনে, আপনি পরিবেশের ভেরিয়েবলগুলির সাথে লোকেল সেটিংস চয়ন করতে পারেন ।
export LC_CTYPE=C
tr '\r' '\n' < target-file | grep search-string
এটি কোনও ত্রুটি ছাড়বে না, তবে এটি কার্যকর কোনও কাজ করবে না যেহেতু target-file
এখনও একটি বাইনারি ফাইল যা সম্ভবত আপনি নির্দিষ্ট করেছেন এমন বেশিরভাগ অনুসন্ধানের স্ট্রিং থাকতে পারে না।
ঘটনাক্রমে, tr '\r' '\n'
ম্যাক ওএস 9 বা ততোধিক বয়সী পাঠ্য ফাইলগুলি না ফেলে থাকলে কোনও কার্যকর কমান্ড নয়। \r
(ক্যারেজ রিটার্ন) ম্যাক ওএস এক্সের আগে ম্যাক ওএসে নতুন লাইন বিভাজক ছিল। ওএসএক্সের পর থেকে, নতুন লাইন বিভাজক \n
(লাইন ফিড, ইউনিক্স স্ট্যান্ডার্ড) এবং পাঠ্য ফাইলগুলিতে ক্যারিজ রিটার্ন থাকে না। উইন্ডোজ লাইন বিরতির প্রতিনিধিত্ব করতে দ্বি-চরিত্রের ক্রম সিআর-এলএফ ব্যবহার করে; tr -d '\r'
উইন্ডোজ পাঠ্য ফাইলটিকে ইউনিক্স / লিনাক্স / ওএসএক্স পাঠ্য ফাইলে রূপান্তরিত করে।
সুতরাং আপনি কমান্ড লাইন থেকে একটি ওয়ার্ড ডকুমেন্টে কীভাবে অনুসন্ধান করতে পারেন? একটি .docx
ওয়ার্ড ডকুমেন্ট আসলে একটি হয় zip সংরক্ষণাগার বিভিন্ন ফাইল, প্রধান বেশী হচ্ছে ধারণকারী এক্সএমএল ।
unzip -l Position-Paper-Final-Version.docx
ম্যাক ওএস এক্সের মধ্যে জিপ ফাইলগুলি অনুসন্ধান করার জন্য জিপগ্রিপ ইউটিলিটি অন্তর্ভুক্ত ।
zipgrep DeCSS Position-Paper-Final-Version.docx
ফলাফল খুব পঠনযোগ্য হবে না কারণ ডকএক্স ফর্ম্যাটে এক্সএমএল ফাইলগুলি বেশিরভাগ ক্ষেত্রে একটি বিশাল লাইন নিয়ে থাকে। আপনি যদি নথির মূল বডি পাঠ্যের ভিতরে সন্ধান করতে চান word/document.xml
তবে সংরক্ষণাগার থেকে ফাইলটি বের করুন । নোট করুন যে নথির পাঠ্য ছাড়াও এই ফাইলটিতে এক্সএমএল মার্কআপ রয়েছে যা নথির কাঠামোর প্রতিনিধিত্ব করে। আপনি এক্সএমএল মার্কআপটিকে sed
ম্যানেজযোগ্য লাইনে বিভক্ত করতে কিছুটা ম্যাসাজ করতে পারেন ।
unzip -p Position-Paper-Final-Version.docx word/document.xml |
sed -e 's/></>\n</g' |
grep DeCSS