از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
دستکاری رشته Bash
سرفصلهای مطلب
که در bash، برنامه ای که برخلاف هیچ زبان برنامه نویسی دیگری نیست، زندگی می کند تا چیزها را در سطل ها قرار دهد و آنها را برای استفاده بعدی نامگذاری کند. این سطل ها برای دستکاری در طول عمر برنامه یا تا زمانی که به صورت دستی قطع شوند یا دیگر ضروری تلقی نشوند در دسترس هستند. این برنامه برای دستکاری سطل ها زندگی می کند.
آنچه در بالا به عنوان سطل نامیده می شود همان چیزی است که در اکثر زبان های برنامه نویسی متغیر می نامیم. علاوه بر این، بر اساس مفهوم اولیه یک متغیر، مفهومی که ما آن را تایپ می نامیم معرفی می شود.
تایپ نامی برای ذخیره سازی و رفتار انتساب مورد انتظار یک متغیر است. بنابراین، وقتی به سطل ها برمی گردیم، این چگونه به نظر می رسد؟
در دنیای سطل کوچک، ما برای برنامه های خود ساخته ایم، سطل ها نام دارند. خودشه.
حال فرض کنید برنامه های ما این تجمل را ندارند که تعداد بی نهایت کیف جتسون در اختیار داشته باشند تا به عنوان سطل از آنها استفاده کنند. قبل از اینکه یک سطل نامگذاری شود و با محتویات آن پر شود، برنامه باید شکل و ساختار هر سطلی را که لمس می کند تصمیم بگیرد. می دانم که کمی بیش از حد به نظر می رسد اما یک شر ضروری است. همه سطل ها بر اساس نوع خود بسته می شوند.
دستکاری رشته در Bash
وقتی به آن باز می گردیم این چگونه به نظر می رسد bash?
توابع، آرایه ها و رشته ها در متغیرها ذخیره می شوند. Bash از آنچه ما ویژگی ها می نامیم برای پرچم گذاری تغییرات در رفتارها استفاده می کند روی وظیفه. علیرغم وجود سیستمی برای تغییر رفتار انتساب متغیر، وقتی همه چیز به آن ختم می شود، مقادیر در متغیرها به عنوان رشته ذخیره می شوند.
که در bash، یک برنامه زندگی می کند تا رشته ها را در متغیرها قرار دهد و آنها را برای استفاده بعدی نامگذاری کند. این رشته ها برای دستکاری در طول عمر برنامه در دسترس هستند. این برنامه برای دستکاری رشته ها زندگی می کند.
در اینجا پوشش خواهیم داد bash دستکاری ریسمان در نفس و عمق هر چه بیشتر برای خوانندگان از هر نوع ساخت و شکل قابل دسترسی باشد. خواندن روی.
دستکاری رشته در چیست bash
دستکاری رشته یک عملیات است روی رشته ای که محتوای آن را تغییر می دهد. که در bash، دستکاری رشته به دو صورت انجام می شود: خالص bash دستکاری رشته، و دستکاری رشته از طریق دستورات خارجی. در اینجا ما هر دو نوع دستکاری رشته را لمس خواهیم کرد.
فرض کنید یک متغیر در داریم bash با نگه داشتن یک رشته می خواهیم رشته نامگذاری شده را دستکاری کنیم. در صورتی که بیش از یک رشته وجود داشته باشد، رشته ها را رشته، string2، … نامگذاری می کنیم. همچنین، ممکن است برای ارتقاء درک محتوای رشته و استفاده مورد نظر، نام یک رشته را چیزی معنادارتر از رشته انتخاب کنیم.
الحاق رشته ها – فهرست کردن رشته ها در یک رشته
که در bash، راه آسان برای به هم پیوستن رشته ها این است که رشته ها را به ترتیب فهرست کنید. رشته به دست آمده یک رشته جدید است که شامل تمام رشته های لیست شده است.
مثال: الحاق رشته ها با فهرست کردن رشته ها در رشته
رشته=“یک”;
رشته 2=“دو”;
رشته 3=${string}${string2};
echo ${string3}
}
خروجی
فهرست کردن رشته ها در یک آرایه
که در bash، راه دیگر برای الحاق رشته ها فهرست کردن رشته ها در یک آرایه و استفاده از بسط پارامتر برای گسترش آرایه به رشته پیوسته است. با این حال، بر خلاف مثال بالا، حذف فضای سفید جداکننده عناصر آرایه ممکن است نیاز به کار اضافی داشته باشد.
مثال: الحاق رشته ها با فهرست کردن رشته ها در یک آرایه
رشته های=(“یک” “دو”);
echo ${رشته[@]}
}
خروجی
کوتاه کردن یک رشته – یک رشته را به چپ منتقل کنید
یکی از راههای کوتاه کردن رشته، انتقال محتوای آن به چپ است. محتویات رشته به سمت چپ ناپدید می شوند و در نتیجه یک رشته کوتاه تر می شود.
مثال: شیفت حلقه چپ
رشته=“ابجدفغیجکلمنوپقرستوووخیز”;
برای من که در $( دنباله 0 $(( ${#string} – 1 )) );
انجام دادن
echo ${string:${i}};
انجام شده
}
خروجی
bcdefghijklmnopqrstuvwxyz
cdefghijklmnopqrstuvwxyz
دفغیجکلمنوپقرستوووخیز
افغیجکلمنوپقرستوووخیز
fghijklmnopqrstuvwxyz
قیجکلمنوپقرستوووخیز
hijklmnopqrstuvwxyz
ijklmnopqrstuvwxyz
jklmnopqrstuvwxyz
klmnopqrstuvwxyz
lmnopqrstuvwxyz
mnopqrstuvwxyz
nopqrstuvwxyz
opqrstuvwxyz
پقرستوووخیز
qrstuvwxyz
rstuvwxyz
stuvwxyz
tuvwxyz
uvwxyz
vwxyz
wxyz
xyz
yz
z
یک رشته را به سمت راست منتقل کنید، رشته فرعی را دریافت کنید
روش دیگری برای کوتاه کردن رشته bash بدست آوردن زیر رشته یک رشته است. عملیات به دست آمده را می توان برای اجرای عملیات shift به سمت راست مشابه روش بالا استفاده کرد.
مثال: شیفت حلقه سمت راست
رشته=“ابجدفغیجکلمنوپقرستوووخیز”;
برای من که در $( دنباله 0 $(( ${#string} – 1 )) );
انجام دادن
echo ${string:0:${#string}-من};
انجام شده
}
خروجی
abcdefghijklmnopqrstuvwxy
abcdefghijklmnopqrstuvwx
ابکدفغیجکلمنوپقرستوو
آبجدفغیجکلمنوپقرستوو
آبجدفغیجکلمنوپقرستو
abcdefghijklmnopqrst
abcdefghijklmnopqrs
abcdefghijklmnopqr
abcdefghijklmnopq
abcdefghijklmnop
abcdefghijklmno
abcdefghijklmn
abcdefghijklm
abcdefghijkl
abcdefghijk
abcdefghij
abcdefghi
abcdefgh
abcdefg
abcdef
abcde
آ ب پ ت
abc
ab
آ
مثال: هرم حلقه شیفت
برای سرگرمی، بیایید دو مثال حلقه شیفت بالا را با هم ترکیب کنیم تا یک مرحله در ما ترسیم کنیم terminal.
مثال: مرحله حلقه شیفت
رشته=“ابجدفغیجکلمنوپقرستوووخیز”;
{
برای من که در $( دنباله 0 $(( ${#string} – 1 )) );
انجام دادن
echo ${string:0:${#string}-من};
انجام شده
} | tac;
{
برای من که در $( دنباله 0 $(( ${#string} – 1 )) );
انجام دادن
echo ${string:${i}};
انجام شده
}
}
خروجی
ab
abc
آ ب پ ت
abcde
abcdef
abcdefg
abcdefgh
abcdefghi
abcdefghij
abcdefghijk
abcdefghijkl
abcdefghijklm
abcdefghijklmn
abcdefghijklmno
abcdefghijklmnop
abcdefghijklmnopq
abcdefghijklmnopqr
abcdefghijklmnopqrs
abcdefghijklmnopqrst
آبجدفغیجکلمنوپقرستو
آبجدفغیجکلمنوپقرستوو
ابکدفغیجکلمنوپقرستوو
abcdefghijklmnopqrstuvwx
abcdefghijklmnopqrstuvwxy
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
bcdefghijklmnopqrstuvwxyz
cdefghijklmnopqrstuvwxyz
دفغیجکلمنوپقرستوووخیز
افغیجکلمنوپقرستوووخیز
fghijklmnopqrstuvwxyz
قیجکلمنوپقرستوووخیز
hijklmnopqrstuvwxyz
ijklmnopqrstuvwxyz
jklmnopqrstuvwxyz
klmnopqrstuvwxyz
lmnopqrstuvwxyz
mnopqrstuvwxyz
nopqrstuvwxyz
opqrstuvwxyz
پقرستوووخیز
qrstuvwxyz
rstuvwxyz
stuvwxyz
tuvwxyz
uvwxyz
vwxyz
wxyz
xyz
yz
z
کل رشته را با حروف بزرگ بنویسید
در bash4 یا جدیدتر میتوانید نویسههای قابل چاپ را با استفاده از بسط پارامتر به صورت زیر بزرگ کنید.
فرض کنید 10 کلمه اول خروجی را از مثال مرحله حلقه Shift در متغیری به نام هرم می اندازیم. توجه داشته باشید که بدون تغییر، رفتار مورد انتظار برای بازتاب محتوای آن به شرح زیر است.
فرمان
هرم=“a abc abcd abcde abcdef abcdefg abcdefgh abcdefghi abcdefghij”
echo ${هرم}
}
خروجی
توجه داشته باشید که همانطور که انتظار دارید، هیچ کلاهی وجود ندارد. بیا منفجرش کنیم یعنی قرار است همه شخصیت هایش را کلاهک کنیم.
فرمان
خروجی
آن آسان بود! اگر بخواهیم فقط حرف اول یک رشته را به حروف مانند یک جمله تبدیل کنیم چطور؟ بله ما میتوانیم! تنها کاری که باید انجام دهیم این است که کمی سخت تر تلاش کنیم، یک کاراکتر کمتر به طور دقیق.
فقط حرف اول یک رشته را با حروف بزرگ بنویسید
شاید بزرگ کردن کل رشته این نباشد bash تکنیک دستکاری رشته که به دنبال آن هستید. اگر فقط لازم باشد حرف اول را مانند یک جمله بزرگ بنویسید چه؟
دستورات
echo ${هرم^}
خروجی
حال فرض کنید که ما بیشتر علاقه مندیم رشته ها را به حروف کوچک تبدیل کنیم. خوشبختانه، خالص وجود دارد bash روش انجام این کار؛ که استفاده از بسط پارامتر است.
کل رشته را در Bash به حروف کوچک تبدیل کنید
یک رشته را به تمام حروف کوچک در تبدیل کنید bash با استفاده از عملگر بسط پارامتر دو کاما (“،”).
دستورات
هرم=“A AB ABC ABCD ABCDE ABCDEF ABCDEFG ABCDEFGH ABCDEFGHI ABCDEFGHIJ”;
echo ${هرم};
echo ${هرم،،}
}
خروجی
a abc abcd abcde abcdef abcdefg abcdefgh abcdefghi abcdefghij
فقط حرف اول یک رشته را به حروف کوچک تبدیل کنید
اولین کاراکتر را در یک رشته به حروف کوچک تبدیل کنید bash با استفاده از عملگر بسط پارامتر تک کاما (“”).
دستورات
هرم=“A AB ABC ABCD ABCDE ABCDEF ABCDEFG ABCDEFGH ABCDEFGHI ABCDEFGHIJ”;
echo ${هرم};
echo ${هرم،}
}
خروجی
یک AB ABC ABCD ABCDE ABCDEF ABCDEFG ABCDEFGH ABCDEFGHI ABCDEFGHIJ
به یک رشته خالی مقداری اختصاص دهید و مقدار آن را برگردانید
اغلب شما می خواهید برای یک رشته خالی یک بازگشتی تنظیم کنید و مقدار آن در طول a باقی بماند bash اسکریپت مانند موردی که به صورت اختیاری متغیرها را از محیط می پذیرد. این را می توان با استفاده از بسط پارامتر انجام داد.
دستورات
echo [${str}];
echo [${str:=empty}];
echo [${str}]
}
خروجی
[empty]
[empty]
یادداشت ها: str فرض می شود که اختصاص داده نشده است
الگویی را که در یک رشته در Bash وجود دارد جایگزین کنید
ما یک رشته داریم که در یک متغیر قرار دارد و میخواهیم اولین رخداد یک زیررشته را جایگزین کنیم. در اینجا چگونه است.
استفاده اساسی
دستورات
خ=“0110110001101001011011100111010101111000011010000110100101101110011101000010111
0011000110110111101101101″;
echo ${str};
echo ${str/111/000}
}
خروجی
0000101110011000110110111101101101
0110110001101001011000000000010100001000011010000110100101100000000001
0000100000011000110110000101101101
جایگزینی همه رخدادهای یک الگو در یک رشته در Bash
ما یک رشته در یک متغیر داریم و می خواهیم همه رخدادهای یک زیررشته را جایگزین کنیم. در اینجا چگونه است.
استفاده اساسی
دستورات
خ=“0110110001101001011011100111010101111000011010000110100101101111001110
10000101110011000110110111101101101″;
echo ${str};
echo ${str//111/000}
}
خروجی
111010000101110011000110110111101101101
0110110001101001011000000000010100001000011010000110100101100000000
00010000100000011000110110000101101101
روش دستکاری رشته ها در bash با استفاده از دستورات خارجی
برای دستکاری رشته ها در bash با استفاده از یک دستور خارجی، باید از ویژگی استفاده کنیم که bash تعویض دستور فراخوانی دستی به طور خلاصه، هر چیزی که در داخل $( ) یا “ باشد به عنوان یک دستور تلقی می شود و در جای خود جایگزین می شود. صادقانه بگویم، من راه اول را ترجیح می دهم. با این حال، شما می توانید از هر کدام استفاده کنید. راه آسان برای استفاده از جایگزینی دستور این است که نتیجه جایگزینی دستور را به یک متغیر به صورت زیر اختصاص دهیم.
دستورات
در مورد دستکاری رشته با استفاده از یک دستور خارجی در bash، ما باید لوله را لوله کنیم echo یک رشته به دستور، مگر اینکه ارسال رشته به فرمان به عنوان پارامتر پذیرفته شود. در اینجا نتیجه جدید باید چگونه باشد.
دستورات
حالا بیایید سعی کنیم کاری واقعی انجام دهیم. با این حال، یک رشته حاوی کلمات را به آخرین کلمه در رشته کاهش دهید؟ برای این مثال، اجازه دهید از دستور خارجی gawk استفاده کنیم.
یادداشت روی دستورات زیر بیایید همه چیز را کوچک کنیم و از شر نقطه خلاص شویم. نقل قول از لینوس توروالدز است. این یک نقل قول واقعا محبوب است.
دستورات
نقل قول=“صحبت ارزان است. کد را به من نشان دهید.”;
آخرین کلمه=$( echo “${quote//./}“ | گاو ‘{print $(NF)}’ );
echo “${last_word،،}“
}
خروجی
خط پایین روی دستکاری رشته در bash
در اینجا روش دستکاری رشته های خالص را توضیح دادیم bash راه و همچنین استفاده از دستورات خارجی. برای خالص bash تکنیک های دستکاری رشته، ویژگی به نام گسترش پارامتر استفاده شد. از طرفی برای دستورات خارجی از جایگزینی دستور استفاده شد. مسلماً، در نوشتن این قطعه، توانایی خود را برای دستکاری رشته ها در آن بهبود بخشیدم bash. انشالله شما هم این کار را کردید.
توجه داشته باشید که موضوع این بحث به طور کامل بررسی نشده است. با این حال، تمرینات برای کسانی باقی مانده است که می خواهند کمی بیشتر سرهم بندی کنند. برای سایر دستکاری های رشته ای که در این مقاله وجود ندارد، می توانید مستقیماً با من تماس بگیرید یا با ویرایشگر تماس بگیرید.
دستکاری رشته کافی است، در حال حاضر… با تشکر،
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-31 16:01:04