একটি ফাইল থেকে বাইট পরিসর পুনরুদ্ধার করতে লিনাক্স কমান্ড


15

আমি এটি জানি headএবং একটি বাইট অফসেট নির্দিষ্ট করার বিকল্প tailনিতে পারি -c। আমি একটি বড় লগ ফাইল থেকে বাইট পরিসীমা দক্ষতার সাথে নিষ্কাশন করার একটি উপায় খুঁজছি।

উত্তর:


17

ইউনিক্সের ডয়ারড্যাভিল কমান্ড, ddউদ্ধার করার জন্য!

dd if=yourfile ibs=1 skip=200 count=100

এটি 200 বাইট থেকে শুরু হবে এবং 100 পরবর্তী বাইটগুলি বা অন্য কথায়, 200-300 বাইট প্রদর্শন করবে। ibsমানে ডিডিএল ডিফল্ট 512 বাইটের পরিবর্তে একবারে কেবল একটি বাইট পড়ে, কিন্তু তবুও ডিফল্ট 512 বাইট খণ্ডে লিখে দেয়। ibsপারফরম্যান্সের ক্ষতি করে কিনা দেখুন , আশা করি না।


782090815 বাইটের একটি ফাইলের জন্য, আমি এই সময়গুলি পেয়েছি: time dd if=file.txt | wc -l= 00: 00: 03 এস। time dd if=file.txt ibs=1 count=782090815 | wc -l= 9:05:19
ড্যানিলো সুজা মোরিস

11

আপনার আগ্রহ যদি বাইটগুলিতে থাকে তবে odতা আরও আগ্রহী হবে।

-j, --skip-bytes=bytes
-N, --read-bytes=bytes

সুতরাং 16 বাইট 1024 বাইট থেকে শুরু করে পড়তে এবং এসকিআইতে আউটপুট

od -j 1024 -N 16 -a /bin/sh

4

আপনি ব্যবহার করতে পারেন dd if=logfile of=pieceoflogfile skip=startingblock count=#ofblocks(সম্ভবত bs=1এক-বাইট ব্লক পেতে, অন্যথায় এটি 512 বাইট ব্লক ব্যবহার করে)। যদিও এটি একবারে একটি বাইট লিখতে বলার পক্ষে কতটা দক্ষ তা নিশ্চিত নয়।


ওয়েল, যদি দক্ষতা সংক্রান্ত সংশ্লিষ্ট - 2 ddএর নল-শৃঙ্খলিত একসঙ্গে (1 ম চর্বি টুকরা কাটা পারে এবং 2nd নল উপর জরিমানা কাজ করবে, চাকতি নয়) হতে পারে, কিন্তু ddনা শুধুমাত্র হয়েছে bsকিন্তু পৃথক ibsএবং obsসেইসাথে, তাই এ অন্তত এটি পড়ার চেয়ে বড় ব্লকগুলির সাথে আউটপুট পারে।
পোজ

1

ধরে নিই যে ফাইলটি খুব বেশি বড় নয় (যেমন বেশ কয়েকটি জিবি বা তাই), একের পরের দিকে পাইপিং করা আপনার পক্ষে যতটা দক্ষ, তা করার জন্য আপনার নিজের প্রোগ্রামের লেখার সংক্ষিপ্ততা।

head ... file | tail ...

(অথবা চারপাশে অন্যভাবে Wh যেদিকেই হোক))


1
লেজটি বড় অফসেটের জন্য প্রথমে যেতে হবে, অন্যথায় মাথা আউটপুটের শুরুটি বাতিল করা হবে।
প্রোসকি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.