🌱 Bash String và Các Phép Xử Lý Chuỗi (Find, Split, Substring, Concatenate)
Trong lập trình Bash Script, chuỗi (string) là một trong những kiểu dữ liệu quan trọng và được sử dụng phổ biến. Bash cung cấp nhiều công cụ mạnh mẽ để thao tác với chuỗi, từ tìm kiếm, cắt chuỗi, nối chuỗi đến tách chuỗi. Trong bài viết này, chúng ta sẽ cùng tìm hiểu chi tiết các phép xử lý chuỗi trong Bash.
Table of Contents
- Tổng Quan về Chuỗi trong Bash
- Tìm Kiếm Chuỗi (Find String)
- Tách Chuỗi (Split String)
- Cắt Chuỗi Con (Substring)
- Nối Chuỗi (Concatenate String)
- Kết Luận
1. Tổng Quan về Chuỗi trong Bash
Chuỗi trong Bash là một tập hợp các ký tự, được khai báo bằng dấu nháy đơn (' '
) hoặc nháy kép (" "
). Dưới đây là một ví dụ cơ bản:
- #! /bin/bash
- # Khai báo chuỗi
- string1='Hello'
- string2="World"
- # In chuỗi ra màn hình
- echo $string1
- echo $string2
Kết quả: In ra "Hello" và "World".
Bash bao gồm nhiều cách để thực hiện các hoạt động chuỗi và thao tác chúng. Sau đây là một số toán tử trong Shell Script được sử dụng để thực hiện các thao tác chuỗi:
Equal Operator - Toán tử bằng
Toán tử bằng (=) được sử dụng để kiểm tra xem hai chuỗi có bằng nhau không.
- #!/bin/bash
- #Script to check whether two strings are equal.
- str1="Hello."
- str2="Embedded"
- if [ $str1 = $str2 ];
- then
- echo "Both the strings are equal."
- else
- echo "Strings are not equal."
- fi
Output: Strings are not equal.
Not Equal Operator - Toán tử khác
Toán tử khác (!=) được sử dụng để xác định rằng các chuỗi không bằng nhau.
- #!/bin/bash
- #Script to check whether two strings are equal.
- str1="Hello."
- str2="Embedded"
- if [[ $str1 != $str2 ]];
- then
- echo "Strings are not equal."
- else
- echo "Strings are equal."
- fi
Output: Strings are not equal.
Less than Operator - Toán tử nhỏ hơn
Toán tử nhỏ hơn (\<) là toán tử có điều kiện được sử dụng để kiểm tra xem chuỗi 1 có nhỏ hơn chuỗi 2 không về mặt độ dài.
- #!/bin/sh
- str1="Hello."
- str2="Embedded"
- if [ $str1 \< $str2 ];
- then
- echo "$str1 is less then $str2"
- else
- echo "$str1 is not less then $str2"
- fi
Output: Hello. is less than Embedded
Greater than Operator - Toán tử lớn hơn
Toán tử lớn hơn (\>) được sử dụng để kiểm tra xem chuỗi 1 có lớn hơn chuỗi 2 không về mặt độ dài.
- #!/bin/sh
- str1="Hello."
- str2="Embedded"
- if [ $str1 \> $str2 ];
- then
- echo "$str1 is greater then $str2"
- else
- echo "$str1 is less then $str2"
- fi
Output: Hello. is less than Embedded
Kiểm tra độ dài chuỗi có lớn hơn hay bằng Zero?
Có thể sử dụng toán tử [ -n Operand ] để kiểm tra xem độ dài chuỗi có lớn hơn Zero hay không, và toán tử [ -z Operand ] để kiểm tra xem chuỗi có trống (độ dài bằng Zero) hay không?
- #! /bin/bash
- str="Embedded"
- if [ -n $str ]; # Check the string is NOT empty?
- then
- echo "String is not empty"
- fi
- if [ -z $str ]; # Check the string is empty?
- then
- echo "String is empty."
- fi
Độ dài của chuỗi
Tổng số ký tự trong bất kỳ chuỗi nào biểu thị độ dài của chuỗi. Trong một số trường hợp, chúng ta có thể cần biết về độ dài của chuỗi để thực hiện một số tác vụ cụ thể. Hầu hết các ngôn ngữ lập trình đều có các hàm tích hợp riêng để tính số ký tự. Tuy nhiên, Bash không chứa loại hàm tích hợp như vậy. Nhưng có một số cách mà chúng ta có thể sử dụng để tìm độ dài của chuỗi trong Bash Scripting.
Bash StringLength
Để tính độ dài của chuỗi, chúng ta có thể sử dụng bất kỳ cú pháp nào sau đây:
- ${#string}
- expr length "$string"
- expr "$string" :'.*'
- $str | wc -c
- $str |awk '{print length}'
Lưu ý: Hãy chú ý đến dấu ngoặc kép được sử dụng xung quanh $string. Nếu một chuỗi có khoảng trắng, thì dấu ngoặc kép rất quan trọng. Nếu không, bạn có thể bỏ qua. Mình khuyên bạn nên luôn sử dụng dấu ngoặc kép xung quanh $string để đảm bảo an toàn.
2. Tìm kiếm chuỗi (Find String)
Bash cho phép kiểm tra sự tồn tại của một chuỗi con trong chuỗi chính. Dưới đây là ví dụ:
- # Check substring
- main_string="Hello World"
- sub_string="World"
- if [[ $main_string == *$sub_string* ]]; then
- echo "The substring '$sub_string' exists in the main string."
- else
- echo "Substring '$sub_string' does not exist."
- fi
Kết quả: Nếu "World" tồn tại trong "Hello World", sẽ in ra thông báo tương ứng.
➜ The substring '$sub_string' exists in the main string.
3. Tách Chuỗi (Split String)
Bash không hỗ trợ trực tiếp tách chuỗi, nhưng bạn có thể sử dụng IFS
(Internal Field Separator) để đạt được điều này:
- #! /bin/bash
- # Split string by space
- string="Hello World Bash Script"
- IFS=' ' read -ra words <<< "$string"
- # Loop through elements
- for word in "${words[@]}"; do
- echo $word
- done
Kết quả: In ra từng từ trong chuỗi "Hello World Bash Script".
4. Cắt Chuỗi Con (Substring)
Bạn có thể cắt chuỗi con bằng cách sử dụng cú pháp: ${string:offset:length}
. Dưới đây là ví dụ:
- #! /bin/bash
- # Cut substring
- string="Hello World"
- substring=${string:6:5}
- echo "The substring is: $substring"
Kết quả: In ra "World".
5. Nối Chuỗi (Concatenate String)
Trong Bash, bạn có thể nối chuỗi đơn giản bằng cách sử dụng toán tử +
hoặc chỉ cần đặt chuỗi gần nhau:
- #! /bin/bash
- # String concatenation
- string1="Hello"
- string2="World"
- result="$string1 $string2"
- echo "String concatenation result: $result"
Kết quả: In ra "Hello World".
6. Kết Luận
Qua bài viết này, bạn đã được làm quen với các phép xử lý chuỗi cơ bản và nâng cao trong Bash. Nắm vững các thao tác này sẽ giúp bạn giải quyết nhiều bài toán liên quan đến dữ liệu và tự động hóa trong công việc hàng ngày.
>>>>>> Follow ngay <<<<<<<
Để nhận được những bài học miễn phí mới nhất nhé 😊
Chúc các bạn học tập tốt 😊