از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
آرایه چاپ Bash با خطوط جدید
سرفصلهای مطلب
[*][*]یک آرایه یک است container حاوی آیتم های نوع داده یکسان، از نوع عدد صحیح یا نوع شناور. با انجام چندین عملیات می توانیم با آرایه ها مقابله کنیم روی آنها یکی از رایج ترین دلیما، شکستن آرایه و چاپ هر کلمه است روی یک خط جدید این ویژگی در مقاله امروز مورد بحث قرار گرفته است. برای درک این مفهوم، باید به یک اوبونتو دسترسی داشته باشید terminal برای اجرا bash-اصطلاحات مرتبط روی اوبونتو ما موضوع را از ساده ترین تا نمونه های حیاتی برای درک کاربر پوشش داده ایم.
مثال 1
در این مثال، یک متغیر را بگیرید و مقدار را به آن اختصاص دهید. مقدار یک رشته طولانی است. برای اینکه نتیجه رشته را در خطوط جدید داشته باشیم، مقدار متغیر را به یک آرایه اختصاص می دهیم. برای اطمینان از تعداد عناصر موجود در رشته، تعداد عناصر را با استفاده از دستور مربوطه چاپ می کنیم.
[*]
$ arr=( ${a} )[*]
[*]
$ اکو “آر دارد ${#arr[@]} عناصر.”
خواهید دید که مقدار حاصل پیامی را با شماره عناصر نمایش داده است. جایی که علامت “#” فقط برای شمارش تعداد کلمات موجود استفاده می شود. [@] شماره شاخص عناصر رشته را نشان می دهد. و علامت “$” برای متغیر است.
برای چاپ هر کلمه روی یک خط جدید، باید از کلیدهای “%s’\n” استفاده کنیم. ‘%s’ برای خواندن رشته تا انتها است. در همان زمان، ‘\n’ کلمات را به خط بعدی منتقل می کند. برای نمایش محتوای آرایه، از علامت “#” استفاده نمی کنیم. زیرا فقط تعداد کل عناصر موجود را می آورد.
می توانید از خروجی مشاهده کنید که هر کلمه نمایش داده می شود روی خط جدید و هر کلمه با یک نقل قول نقل می شود زیرا ما آن را در دستور قرار داده ایم. این برای شما اختیاری است که رشته را بدون گیومه تکی تبدیل کنید.
مثال 2
معمولاً یک رشته با استفاده از زبانه ها و فاصله ها به یک آرایه یا کلمات تک شکسته می شود، اما این معمولاً منجر به شکست های زیادی می شود. ما در اینجا از روش دیگری استفاده کرده ایم که استفاده از IFS است. این محیط IFS با نشان دادن چگونگی شکستن یک رشته و تبدیل آن به آرایه های کوچک سروکار دارد. IFS دارای مقدار پیشفرض \n\t است. این بدان معنی است که فاصله، یک خط جدید و یک تب می توانند مقدار را به خط بعدی منتقل کنند.
در نمونه فعلی، از مقدار پیش فرض IFS استفاده نمی کنیم. اما در عوض، آن را با یک کاراکتر از خط جدید جایگزین می کنیم، IFS=$’\n’. بنابراین اگر از فاصله و تب استفاده کنید، باعث شکستن رشته نمی شود.
حالا سه رشته را بردارید و در متغیر رشته ذخیره کنید. خواهید دید که ما قبلا مقادیر را با استفاده از تب ها در خط بعدی نوشته ایم. وقتی از این رشته ها پرینت بگیرید، به جای سه خط، یک خط تشکیل می شود.
[*]
من برنامه نویسی را دوست دارم[*]
[*]
زبان مورد علاقه من دات نت است.”[*]
[*]
$ اکو $str
حالا نوبت استفاده از IFS در دستور با کاراکتر newline است. در همان زمان، مقادیر متغیر را به آرایه اختصاص دهید. پس از اعلام این موضوع، پرینت بگیرید.
[*]
$ printf “%s\n” “${arr[@]}”
می توانید نتیجه را ببینید. این نشان می دهد که هر رشته به صورت جداگانه نمایش داده می شود روی یک خط جدید در اینجا کل رشته به عنوان یک کلمه واحد در نظر گرفته می شود.
یک نکته در اینجا قابل ذکر است: پس از پایان فرمان، تنظیمات پیش فرض IFS دوباره برگردانده می شود.
مثال 3
همچنین می توانیم مقادیر آرایه نمایش داده شده را محدود کنیم روی هر خط جدید یک رشته بردارید و آن را در متغیر قرار دهید. حالا آن را تبدیل کنید یا در آرایه ذخیره کنید، همانطور که در مثال های قبلی انجام دادیم. و به سادگی با همان روشی که قبلاً توضیح داده شد، چاپ کنید.
حالا به رشته ورودی توجه کنید. در اینجا ما از دو نقل قول استفاده کرده ایم روی نام قسمت دو بار ما دیدیم که آرایه نمایش داده نمی شود روی خط بعدی هر زمان که با یک نقطه روبرو شود. در اینجا نقطه بعد از دو نقل قول استفاده می شود. بنابراین هر کلمه نمایش داده خواهد شد روی خطوط جداگانه فاصله بین دو کلمه به عنوان نقطه شکست در نظر گرفته می شود.
[*]
$ arr=( ${x} )[*]
[*]
$ printf “%s\n” “${arr[@]}”
همانطور که نقطه بعد از “Butt” است، شکستن آرایه در اینجا متوقف می شود. “من” بدون هیچ فاصله ای بین نقطه نوشته شده است، بنابراین از نقطه جدا می شود.
مثال دیگری از مفهوم مشابه را در نظر بگیرید. بنابراین کلمه بعدی بعد از نقطه نمایش داده نمی شود. بنابراین می توانید ببینید که در نتیجه فقط اولین کلمه نمایش داده می شود.
مثال 4
در اینجا ما دو رشته داریم. هر کدام 3 عنصر در داخل پرانتز وجود دارد.
[*]
$ آرایه 2=(گیلاس پرتقال انبه)
سپس باید محتویات هر دو رشته را نمایش دهیم. یک تابع را اعلام کنید. در اینجا از کلمه کلیدی “typeset” استفاده کردیم و سپس یک آرایه را به یک متغیر و آرایه های دیگر را به متغیر دیگری اختصاص دادیم. اکنون می توانیم هر دو آرایه را به ترتیب چاپ کنیم.
[*]
Typeset –n دسته اول=1 دلار آرایه ثانویه=2 دلار[*]
[*]
Printf’%s\n’ 1st:${firstarray[@]}”[*]
[*]
Printf’%s\n’ دوم:${secondarray[@]}” }
اکنون برای چاپ تابع، از نام تابع با هر دو نام رشته همانطور که قبلاً اعلام شد استفاده خواهیم کرد.
از نتیجه قابل مشاهده است که هر کلمه از هر دو آرایه نمایش داده می شود روی یک خط جدید
مثال 5
در اینجا یک آرایه با سه عنصر اعلام می شود. برای جدا کردن آنها روی خطوط جدید، ما از یک لوله و یک فضای نقلقول شده با دو گیومه استفاده کردیم. هر مقدار از آرایه شاخص مربوطه به عنوان ورودی برای دستور بعد از لوله عمل می کند.
[*]
$ اکو ${آرایه[*]} | tr “” “\n”
فضا در نمایش هر کلمه از یک آرایه به این صورت است روی یک خط جدید
مثال 6
همانطور که قبلاً می دانیم، کار کردن “\n” در هر دستور، کل کلمات بعد از آن را به خط بعدی منتقل می کند. در اینجا یک مثال ساده برای توضیح بیشتر آورده شده است روی این مفهوم اساسی هرگاه از “\” با “n” در هر جایی از جمله استفاده کنیم، به خط بعدی منتهی می شود.
بنابراین جمله نصف می شود و به سطر بعدی منتقل می شود. با حرکت به سمت مثال بعدی، “%b\n” جایگزین می شود. در اینجا یک ثابت “-e” نیز در دستور استفاده می شود.
بنابراین کلمات بعد از “\n” به خط بعدی منتقل می شوند.
مثال 7
ما از الف استفاده کرده ایم bash اینجا فایل کنید این یک برنامه ساده است. هدف نشان دادن روش چاپ مورد استفاده در اینجا است. این یک “حلقه For” است. هر زمان که یک آرایه را از طریق یک حلقه چاپ کنیم، این نیز منجر به شکسته شدن آرایه در کلمات جداگانه می شود. روی خطوط جدید
[*]
انجام دادن[*]
[*]
اکو کلمه $[*]
[*]
انجام شده
حالا از دستور یک فایل پرینت می گیریم.
نتیجه
روش های مختلفی برای تراز کردن داده های آرایه شما وجود دارد روی خطوط جایگزین به جای نمایش آن روی یک خط می توانید از هر یک از گزینه های داده شده در کدهای خود استفاده کنید تا آنها را مؤثر کنید.
[*]
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
[*]زمان انتشار: 1402-12-30 15:39:03