ইম্যাক্স: বিশাল ফাইল থেকে এক্স থেকে ওয়াই লাইনগুলির মধ্যে সমস্ত রেখার সাথে একটি বাফার খুলুন


10

: এই অন্য প্রশ্ন হিসাবে একই আত্মা বিড়াল লাইন এক্স বিপুল ফাইলে ওয়াই লাইন :

একটি বিশাল পাঠ্য ফাইল থেকে ইমাক্সের (এবং একটি বাফারের উপর দেখানো) প্রদত্ত লাইনের একটি সেট (যেমন লাইন Xএবং মধ্যবর্তী সমস্ত রেখাগুলি) খোলার কোনও উপায় আছে Y?

উদাহরণস্বরূপ ফাইল থেকে 57890000 এবং 57890010 লাইনের মধ্যে সমস্ত লাইন খুলুন এবং একটি বাফারে দেখান huge.txt

আপডেট: আমি এমন একটি সমাধানে আগ্রহী যেটি কমপক্ষে কেবল পঠনযোগ্য (কেবল প্রদর্শনের উদ্দেশ্যে) লাইনগুলি খুলতে পারে, যদিও আমি লাইনগুলি সম্পাদনা করতে (এবং মূল ফাইলটিতে সংরক্ষণ করতে পারি) তবে এটি দুর্দান্ত হবে।


ডু আপনি কেবল এটি দেখতে চান, বা এটি সম্পাদনা করতে চান?
চোরোবা

1
ভেতর থেকে কেমন ed? 57890000,57890010p
কেভিন

উত্তর:


7

আপনি যদি পুরো ফাইলটি খুলতে চান (যা প্রয়োজন) তবে এটির কিছু অংশ সম্পাদক উইন্ডোতে দেখান, সংকীর্ণ ব্যবহার করুন । আপনি যে বাফারে কাজ করতে চান তার অংশটি নির্বাচন করুন এবং C-x n n( narrow-to-region) টিপুন । যদি আপনি কোনও অক্ষম কমান্ড সম্পর্কে প্রম্পট পান তবে "হ্যাঁ" বলুন। পুরো বাফারটি দেখতে আবার C-x n w( widen) টিপুন । আপনি যদি বাফারটি সংরক্ষণ করেন তবে সম্পূর্ণ ফাইলটি নির্বাচন করা হয়েছে: সমস্ত ডেটা এখনও রয়েছে, সংকীর্ণতা কেবল আপনি যা দেখছেন তা সীমাবদ্ধ করে।

আপনি যদি কোনও ফাইলের কোনও অংশ দেখতে চান তবে আপনি এটি একটি বর্তমান উপদ্বার shell-command( M-1 M-!) সহ বর্তমান বাফারে সন্নিবেশ করতে পারেন ; চালানোর উপযুক্ত কমান্ড পছন্দসই লাইনের বের করে আনতে , যেমন <huge.txt tail -n +57890001 | head -n 11

এছাড়াও একটি লিস্প ফাংশন রয়েছে insert-file-contentsযা বাইট পরিসর নিতে পারে। আপনি এটি দিয়ে আবেদন করতে পারেন M-:( eval-expression):

(insert-file-contents "huge.txt" nil 456789000 456791000)

মনে রাখবেন আপনি পূর্ণসংখ্যার আকার সীমাতে চলে যেতে পারেন (সংস্করণ- এবং প্ল্যাটফর্ম-নির্ভর, এর মান পরীক্ষা করুন most-positive-fixnum)।

তাত্ত্বিকভাবে ইমাস মোডটি লেখা সম্ভব হবে যা প্রয়োজন অনুযায়ী স্বচ্ছভাবে ফাইলগুলির কিছু অংশ লোড করে এবং সংরক্ষণ করে (যদিও পূর্ণসংখ্যার আকারের সীমাটি 32-বিট মেশিনে প্রকৃত ফাইল অফসেটগুলি ব্যবহার করা অসম্ভব করে তোলে)। আমি যে দিকটি জানি তার মধ্যে একমাত্র প্রচেষ্টা হ'ল ভিএলএফ ( এখানে গিটহাব লিঙ্ক )।


1

আপনি এই পার্ল এবং এলিজপ সংমিশ্রণটিকে দরকারী বলে মনে করতে পারেন। এটি আপনাকে একটি বাফারে ডেটা পাইপ করতে দেয়। পরবর্তী বারে একই বাফার-নাম ব্যবহার করে অনুরোধগুলি একই বাফারে নতুন লাইন যুক্ত করবে।

আপনি বাফারকে "সম্পাদনা" করতে পারেন , তবে সম্পাদনাটি কোনওভাবেই উত্সটিতে ফিরে আসে না (যা একটি পাইপ ) ... এটি কোনও লাইন নম্বর দেখায় না, যদিও আপনি প্রতিটিটির জন্য একটি নম্বরযুক্ত উপসর্গ অন্তর্ভুক্ত করার জন্য ইনপুটটি টুইট করতে পারেন লাইন।

from=50000000
  to=50000010
<file_50 head -n "$to" | tail -n +"$from" | e-sink.pl

বাফারে:

<<<<< start: 2012-09-09T01:39:49
1000000
VSjU K97X5Z dFcc ZZd2OqQ PzbnphT
yQBTt LOic Ks sPXrq tty oy
dA8 SD BvO daZ KFPr44X
X0m3BI eR4go YjFp7e vbJr3oe Y0OGgH3 uPfz yfq59
we rm L9iD ugcJBND daS

7pO lwUFzNE HPlPW fmPZ vpRs Rx EFeHaFM
b0 1B ncr Db324 vwO Un34R
HDZS wq9zg W013 5JGly
kAfP QPpjjyh pXMAw I1 CGKDc23 qCBnP
<<<<<   end: 0.630s

অথবা, লাইন নম্বর যুক্ত হয়েছে:

from=50000000
  to=50000010
<file_50 head -n "$to" | tail -n +"$from" | nl -v$from -ba -w${#to} | e-sink.pl

বাফারে:

<<<<< start: 2012-09-09T01:53:44
50000000    1000000
50000001    VSjU K97X5Z dFcc ZZd2OqQ PzbnphT
50000002    yQBTt LOic Ks sPXrq tty oy
50000003    dA8 SD BvO daZ KFPr44X
50000004    X0m3BI eR4go YjFp7e vbJr3oe Y0OGgH3 uPfz yfq59
50000005    we rm L9iD ugcJBND daS
50000006    
50000007    7pO lwUFzNE HPlPW fmPZ vpRs Rx EFeHaFM
50000008    b0 1B ncr Db324 vwO Un34R
50000009    HDZS wq9zg W013 5JGly
50000010    kAfP QPpjjyh pXMAw I1 CGKDc23 qCBnP
<<<<<   end: 0.768s

আমি এটি একটি স্ট্যাকওভারফ্লো কিউ / এ পেয়েছি


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