লম্বা স্ট্রিংগুলিতে লাইন ব্রেকগুলি সন্নিবেশ করার জন্য কি কোনও কমান্ড লাইন সরঞ্জাম রয়েছে?


18

একটি দীর্ঘ স্ট্রিং দেওয়া হয়েছে যা সীমাবদ্ধ পাঠ্য-প্রস্থের সাথে প্রদর্শন করা দরকার, * নিক্সে কি একটি কমান্ড লাইন সরঞ্জাম রয়েছে যা একক-রেখার স্ট্রিংকে একাধিক-লাইনের স্ট্রিংয়ে রূপান্তর করে যা প্রতিটি লাইন প্রদত্ত পাঠ্য-প্রস্থের চেয়ে বেশি নয়?

উদাহরণস্বরূপ, নিম্নলিখিত স্ট্রিং দেওয়া

$ MYSTRING="Call me Ishmael. Some years ago - never mind how long precisely - having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world."

আমি কিছুটা এরকম বিন্যাস করতে চাই:

$ echo $MYSTRING | special-format-command --width=30
Call me Ishmael. Some years ag
o - never mind how long precis
ely - having little or no mone
y in my purse, and nothing par
ticular to interest me on shor
e, I thought I would sail abou
t a little and see the watery 
part of the world.

উত্তর:


24

আপনি foldআদেশটি চেষ্টা করতে পারেন :

echo "$MYSTRING" | fold -w 30

2
+1, তবে সম্ভবত আরও ভাল লিখেছেন echo $MYSTRING | fold -w 30, যেহেতু -30সিনট্যাক্সটি ভাঁজ ম্যানপেজে প্রদর্শিত হচ্ছে না ?
ire_and_curses

5
উত্তরোত্তর জন্য, এছাড়াও আছে fmtfoldএবং এর মধ্যে পার্থক্য fmtহ'ল foldস্থির প্রস্থে মোড়ানো হবে এমনকি শব্দের বিভাজন এবং ফাঁকা ফাঁকা রেখাগুলি শুরু হতে পারে। fmtপ্রস্থের কাছাকাছি বা নীচে মোড়ানো হবে এমন সময় এটি শব্দের বিভক্ত হবে না, লাইনগুলি ফাঁকা দিয়ে শুরু হবে না এবং সংক্ষিপ্ত রেখাগুলিও যুক্ত হতে পারে।
বাহামা

5
foldঅনুরূপ আচরণ আছে বলে মনে হচ্ছে fmtযখন -sবিকল্প ব্যবহার করা হয়।
Cory Klein

মজার, আমি -w বিকল্পটি ব্যবহার করেছি তবে এটি এটি চর দিয়ে বিভক্ত করেছে।
দ্বিখণ্ডিত

6

এখানে একটি পদ্ধতি ব্যবহার করা হচ্ছে sed:

sed 's/.\{30\}/&\
/g'

কিন্তু এটার মানে কি?
রিচার্ড

1
@ রিচার্ড .\{30\}একই স্ট্রিং ( &) এর সাথে নিউলাইন ( ) বাদে নিউলাইন ( ) ব্যতীত অন্য কোনও অক্ষরের 30 টি প্রতিস্থাপন করুন ।
ক্রিস ডাউন

6

সমগ্র উদ্দেশ্য fmt(গনুহ coreutils এবং IIRC অন্য সংস্করণের অংশ, অ গনুহ * nixes সঙ্গে অন্তর্ভুক্ত করা হয়েছে, যাতে প্রায় ইতিমধ্যে ইনস্টল করার জন্য নির্দিষ্ট হয়) পুনরায় ফরম্যাট অনুচ্ছেদ হয়।

যাইহোক, আরও ভাল একটি সরঞ্জাম বলা হয়েছে par(অনুচ্ছেদ পুনর্নির্মাণের জন্য)। এটি সবকিছু করতে পারেfmt করতে পারে করতে পারে তবে সঠিক আউটপুট ফর্ম্যাটটি নিয়ন্ত্রণ করতে আরও অনেক বিকল্প রয়েছে।

সম্পর্কে অনেক সত্যিই সুন্দর জিনিস এক par এটি হ'ল এটি ইমেলগুলিতে উদ্ধৃতি অত্যন্ত স্মার্ট (এমনকি উদ্ধৃতি দেওয়ার একাধিক স্তর) - খুব দরকারী ... আমার আমার .vimrc সেট আপ হয়েছে যাতে এফ 5 টি আঘাত করে বর্তমান অনুচ্ছেদে পারের মাধ্যমে প্রেরণ করে।

যদি এটি আপনার ডিসট্রোর জন্য প্যাকেজ করা না থাকে (এটি ডেবিয়ান এবং ডেরিভেটিভস, সম্ভবত অন্যদের জন্যও), তবে পার্সটি http://www.nicemice.net/par/ এ পাওয়া যাবে


"নন-জিএনইউ * নিক্সেস" দ্বারা, আপনি কি "আসল" ("ইউনিক্সের মতো" নয়) ইউনিক্সগুলি বোঝাচ্ছেন? (অন্যথায় দুর্দান্ত সরঞ্জাম, এটি মনে হয়))
ইমানুয়েল বার্গ

মানে এখন-অপ্রচলিত মালিকানা জঙ্ক * নিক্সেস।
ক্যাস

এটাই আমি ভেবেছিলাম, তবে কেন আপনি তখন তারাটি ব্যবহার করছেন? আমি ভেবেছিলাম যে সর্বদা "লিনাক্স ইত্যাদির জন্য" ইউনিক্সের মতো "টাইপ করতে হবে। (আমি আপনাকে বিশদ দিয়ে বাগ দিচ্ছি না - বা আমি ঠিক করছি - তবে আমি সত্যিই জানতে চাই, আমি এটির জন্য আপনাকে বাগ দিচ্ছি না।)
ইমানুয়েল বার্গ

*nixশুধু বলছে একটি উপায় "জেনেরিক ইউনিক্স বা ইউনিক্স মত সিস্টেম" - এটি একটি সময় থেকে তারিখগুলি শব্দ ইউনিক্স যেমন AT & T এর একটি মালিকানাধীন ট্রেডমার্ক ছিল
CA গুলির

3

fold -s আপনার প্রশ্নের সবচেয়ে সংক্ষিপ্ততম, সেরা উত্তর।

যাইহোক, সেই এক-উদ্দেশ্যমূলক সরঞ্জামগুলি যেমন কিছু ক্ষেত্রে হয় তত ভাল, সাধারণভাবে আপনার সম্পাদকের এটি করা উচিত।

ইমাক্সে, আপনি যেভাবে যাইহোক এটি টুইট করতে পারেন। আমার হিসাবে, আমি ব্যবহার করি visual-line-mode( Wrapমোড লাইনে একটি ছোটখাটো মোড হিসাবে দেখায় ) কারণ সাধারণ ক্ষেত্রে, আমি অনুচ্ছেদের শেষে ছাড়া অন্য কোথাও লাইন বিরতি চাই না।

আমি ভেবেছিলাম আমি এটি করার উপায়টি বলব। এটি "উপায়" নয়, তবে এটি একটি উপায়; আমি যেমন ফাংশন এবং ভেরিয়েবলগুলি উল্লেখ করেছি, আপনার উপায় হ'ল এগুলি একসাথে রাখা এবং সেগুলি আপনার পক্ষে কাজ করার জন্য তাদের স্বয়ংক্রিয়করণ করা। (এটি ইমাকস, তবে পর্যাপ্ত উন্নত সম্পাদকের জন্য একই ধরণের পোস্ট লেখা যেতে পারে))

আমি বলেছিলাম যে টাইপ করার সময় আমার কাছে লাইনগুলি চাক্ষুষভাবে মোড়ানো রয়েছে এবং এগুলি ম্যানুয়ালি কখনও ভাঙ্গা যায় না। সর্বদা হিসাবে, ব্যতিক্রম আছে: উদাহরণস্বরূপ, GNUS নির্দিষ্ট প্রস্থের (অক্ষরে) অতিক্রম করে লাইন সহ ইউজনেটকে পোস্ট প্রেরণ করবে না। সুতরাং, তারপর আমি ব্যবহার M-q। ইমাসে M-qকমান্ডটি চালায় fill-paragraph। ভেরিয়েবলটি fill-columnপূরণের জন্য প্রস্থকে নিয়ন্ত্রণ করে। উদাহরণ হিসাবে, আমি যদি এটি লিখি (একক লাইনে)

This is a lot of text being written right now. The purpose is to overflow the line so I have have to line break it with M-q.

এবং তারপর এমকিউ ব্যবহার করুন, আমি পেয়েছি

This is a lot of text being written right now. The purpose is to
overflow the line so I have have to line break it with M-q.

সঙ্গে justify-current-line(দু'বার দুই যেমন লাইন), আপনি পেতে

This  is a lot  of text  being written  right now.  The purpose  is to
overflow  the  line  so  I  have  have to  line  break  it  with  M-q.

তবে, আমি দেখতে পেয়েছি যে লোকেরা খুব কমই জিনিসগুলি দেখার জন্য মনোস্পেস ফন্ট ব্যবহার করে, তাই এটি এটিকে ব্যবহার করে বেশি বোঝা যায় নি (আমার নিজের দেখার আনন্দ বাদে)। আপনি যদি এটি পছন্দ করেন তবে আপনি একই সময়ে fill-paragraphভরাট করতে এবং ন্যায়সঙ্গত করার জন্য টুইট করতে পারেন । এছাড়াও আপনি এ গিয়ে Emacs আপনার জন্য এমনটি, সবসময়, আপনি টাইপ করার থাকতে পারে: auto-fill-mode। (আমি যে স্ট্রেসাল পেয়েছি, কিন্তু এটি আমি।)

এটি অনেকটা কাজের মতো মনে হতে পারে, এবং এটি; তবে একবার আপনি হয়ে গেলে (এটি এবং আরও 1000 টি জিনিস দিয়ে) আপনি যে সরঞ্জামগুলি পছন্দ করতে চান ঠিক তেমন আচরণ করে তা উপভোগ করতে পারবেন।

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