Linux中國

Bash 基礎知識系列 #6:處理字元串操作

在大多數編程語言中,你都會找到字元串數據類型。字元串基本上是一組字元。

Bash Shell 有所不同。字元串沒有單獨的數據類型。這裡一切都是變數。

但這並不意味著你不能像在 C 和其他編程語言中那樣處理字元串。

Bash Shell 中可以查找子字元串、替換子字元串、連接字元串以及更多字元串操作。

在 Bash 基礎知識系列的這一部分中,你將學習基本的字元串操作。

在 Bash 中獲取字元串長度

讓我們從最簡單的選項開始。也就是獲取字元串的長度。這很簡單:

${#string}

讓我們在示例中使用它。

Example of getting string length in bash

正如你所看到的,第二個示例中有兩個單詞,但由於它用引號引起來,因此它被視為單個單詞。連空格都算作一個字元。

在 Bash 中連接字元串

用技術術語來說是字元串 連接 concatenation ,這是 Bash 中最簡單的字元串操作之一。

你只需像這樣一個接一個地使用字元串變數:

str3=$str1$str2

還能比這更簡單嗎?我覺得不能。

讓我們看一個例子。這是我的示例腳本,名為 join.sh

#!/bin/bash

read -p "Enter first string: " str1
read -p "Enter second string: " str2

joined=$str1$str2

echo "The joined string is: $joined"

以下是該腳本的運行示例:

Join two strings in bash

在 Bash 中提取子字元串

假設你有一個包含多個字元的大字元串,並且你想要提取其中的一部分。

要提取子字元串,需要指定主字元串、子字元串的起始位置和子字元串的長度,如下所示:

${string:$pos:$len}

? 和數組一樣,字元串中的定位也是從 0 開始。

這是一個例子:

Extracting substring in bash

即使你指定的子字元串長度大於字元串長度,它也只會到達字元串末尾。

替換 Bash 中的子字元串

假設你有一個大字元串,並且你想用另一個字元串替換其中的一部分。

在這種情況下,你可以使用這種語法:

${string/substr1/substr2}

✋ 只有第一次出現的子字元串才會以這種方式替換。如果要替換所有出現的地方,請使用 ${string//substr1/substr2}

這是一個例子:

Replace substring in bash

正如你在上面看到的,「good」 一詞被替換為 「best」。我將替換的字元串保存到同一字元串中以更改原始字元串。

? 如果未找到子字元串,則不會替換任何內容。它不會導致錯誤。

在 Bash 中刪除子字元串

我們來談談刪除子字元串。假設你要刪除字元串的一部分。在這種情況下,只需將子字元串提供給主字元串,如下所示:

${string/substring}

✋ 通過這種方式,僅刪除第一次出現的子字元串。如果要刪除所有出現的內容,請使用 ${string//substr}

如果找到子字元串,則將從字元串中刪除它。

讓我們通過一個例子來看看。

Delete substring in bash

不用說,如果沒有找到子字元串,則不會刪除它。它不會導致錯誤。

?️ 練習時間

現在是你通過簡單練習來實踐字元串操作的時候了。

練習 1:聲明一個字元串 「I am all wet」。現在通過用 「set」 替換單詞 「wet」 來更改此字元串。

練習 2:創建一個字元串,以 112-123-1234 格式保存電話號碼。現在,你必須刪除所有 -

這應該會給你一些在 Bash 中使用字元串的不錯的練習。在下一章中,你將學習如何在 Bash 中使用 if-else 語句。敬請關注。

(題圖:MJ/aa73b2c9-6d2f-42e2-972d-94fab56d30cc)

via: https://itsfoss.com/bash-strings/

作者:Abhishek Prakash 選題:lkxed 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國