mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-26 21:30:55 +08:00
[手动选题][tech]: 20230717.0 ⭐️⭐️ Bash Basics Series 6 Handling String Operations.md
This commit is contained in:
parent
4c8882394e
commit
e109ab368e
@ -0,0 +1,149 @@
|
||||
[#]: subject: "Bash Basics Series #6: Handling String Operations"
|
||||
[#]: via: "https://itsfoss.com/bash-strings/"
|
||||
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
|
||||
[#]: collector: "lkxed"
|
||||
[#]: translator: " "
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
|
||||
Bash Basics Series #6: Handling String Operations
|
||||
======
|
||||
|
||||
In most programming languages, you'll find a string data type. A string is basically a group of characters.
|
||||
|
||||
Bash shell is different though. There is no separate data type for strings. Everything is a variable here.
|
||||
|
||||
But that doesn't mean that you cannot deal with strings in the same way you do in C and other programming languages.
|
||||
|
||||
Finding substrings, replacing substrings, joining strings and many more string operations are possible in Bash shell.
|
||||
|
||||
In this part of the Bash Basics Series, you'll learn the basic string manipulations.
|
||||
|
||||
### Get string length in bash
|
||||
|
||||
Let's start with the simplest option. Which is to get the length of a string. It's quite simple:
|
||||
|
||||
```
|
||||
${#string}
|
||||
```
|
||||
|
||||
Let's use it in an example.
|
||||
|
||||
![Example of getting string length in bash][1]
|
||||
|
||||
As you can see, the second example had two words in it but since it was in quotes, it was treated as a single word. Even the space is counted as a character.
|
||||
|
||||
### Join strings in bash
|
||||
|
||||
The technical term is concatenation of strings, one of the simplest possible string operations in bash.
|
||||
|
||||
You just have to use the string variables one after another like this:
|
||||
|
||||
```
|
||||
str3=$str1$str2
|
||||
```
|
||||
|
||||
Can it go any simpler than this? I don't think so.
|
||||
|
||||
Let's see it with an example. Here is my example script named `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"
|
||||
```
|
||||
|
||||
Here's a sample run of this script:
|
||||
|
||||
![Join two strings in bash][2]
|
||||
|
||||
### Extract substring in bash
|
||||
|
||||
Let's say you have a big string with several characters and you want to extract part of it.
|
||||
|
||||
To extract a substring, you need to specify the main string, the starting position of the substring and the length of the substring in the following manner:
|
||||
|
||||
```
|
||||
${string:$pos:$len}
|
||||
```
|
||||
|
||||
> 💡Like arrays, positioning in strings also start at 0.
|
||||
|
||||
Here's an example:
|
||||
|
||||
![Extracting substring in bash][3]
|
||||
|
||||
Even if you specify the substring length greater than the string length, it will only go till the end of the string.
|
||||
|
||||
### Replace substring in bash
|
||||
|
||||
Let's say you have a big string and you want to replace part of it with another string.
|
||||
|
||||
In that case, you use this kind of syntax:
|
||||
|
||||
```
|
||||
${string/substr1/substr2}
|
||||
```
|
||||
|
||||
> ✋ Only the first occurrence of a substring is replaced this way. If you want to replace all occurrences, use`${string//substr1/substr2}`
|
||||
|
||||
Here's an example:
|
||||
|
||||
![Replace substring in bash][4]
|
||||
|
||||
As you can see above, the word good was replaced with best. I saved the replaced string to the same string to change the original.
|
||||
|
||||
> 💡 If the substring is not found, nothing is replaced. It won't result in an error.
|
||||
|
||||
### Delete substring in bash
|
||||
|
||||
Let's talk about removing substrings. Let's say you want to remove part of a string. In that case, just provide the substring to the main string like this:
|
||||
|
||||
```
|
||||
${string/substring}
|
||||
```
|
||||
|
||||
> ✋ Only the first occurrence of a substring is deleted this way. If you want to delete all occurrences, use`${string//substr}`
|
||||
|
||||
If the substring is found, it will be deleted from the string.
|
||||
|
||||
Let's see this with an example.
|
||||
|
||||
![Delete substring in bash][5]
|
||||
|
||||
This goes without saying that if the substring is not found, it is not deleted. It won't result in an error.
|
||||
|
||||
### 🏋️ Exercise time
|
||||
|
||||
It's time for you to practice string manipulation with simple exercises.
|
||||
|
||||
**Exercise 1**: Declare a string 'I am all wet'. Now change this string by replacing the word wet with set.
|
||||
|
||||
**Exercise 2**: Create a string that saves phone numbers in the following format `112-123-1234`. Now, you have to delete all `-`.
|
||||
|
||||
That should give you some decent practice with strings in bash. In the next chapter, you'll learn about using if-else statements in bash. Stay tuned.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/bash-strings/
|
||||
|
||||
作者:[Abhishek Prakash][a]
|
||||
选题:[lkxed][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/abhishek/
|
||||
[b]: https://github.com/lkxed/
|
||||
[1]: https://itsfoss.com/content/images/2023/07/bash-string-length-example.png
|
||||
[2]: https://itsfoss.com/content/images/2023/07/join-strings-bash.png
|
||||
[3]: https://itsfoss.com/content/images/2023/07/extract-substring-bash.png
|
||||
[4]: https://itsfoss.com/content/images/2023/07/replace-substring-bash.png
|
||||
[5]: https://itsfoss.com/content/images/2023/07/bash-delete-substring.png
|
Loading…
Reference in New Issue
Block a user