Cách thao tác chuỗi trong Bash trên Linux

[ad_1]

fatmawati achmad zaenuri / Shutterstock.com

Nếu có một thứ mà Linux được trang bị tốt, thì đó là các tiện ích để thao tác các chuỗi. Nhưng có một tập hợp toàn bộ chức năng được tích hợp ngay trong Bash shell. Đây là cách nó được sử dụng.

Thao tác chuỗi

Hệ sinh thái Linux được đóng gói với các công cụ tuyệt vời để làm việc với văn bản và chuỗi. Chúng bao gồm awk, grep, sed và cut. Đối với bất kỳ văn bản nặng nề nào, đây sẽ là lựa chọn của bạn.

Tuy nhiên, đôi khi, thật tiện lợi khi sử dụng các khả năng có sẵn của shell, đặc biệt là khi bạn đang viết một đoạn script ngắn và đơn giản. Nếu tập lệnh của bạn sẽ được chia sẻ với người khác và nó sẽ chạy trên máy tính của họ, việc sử dụng chức năng Bash tiêu chuẩn có nghĩa là bạn không phải băn khoăn về sự hiện diện hoặc phiên bản của bất kỳ tiện ích nào khác.

Nếu bạn cần sức mạnh của các tiện ích chuyên dụng, thì hãy sử dụng chúng. Đó là những gì họ ở đó để làm. Nhưng thường thì script của bạn và Bash có thể tự hoàn thành công việc.

Vì chúng được tích hợp sẵn Bash nên bạn có thể sử dụng chúng trong các tập lệnh hoặc trên dòng lệnh. Sử dụng chúng trong cửa sổ đầu cuối là một cách nhanh chóng và thuận tiện để tạo nguyên mẫu các lệnh của bạn và hoàn thiện cú pháp. Nó tránh chu kỳ chỉnh sửa, lưu, chạy và gỡ lỗi.

Tạo và làm việc với các biến chuỗi

Tất cả những gì chúng ta cần khai báo một biến và gán một chuỗi cho nó là đặt tên cho biến, sử dụng dấu bằng =và cung cấp chuỗi. Nếu có khoảng trắng trong chuỗi của bạn, hãy đặt nó trong dấu ngoặc kép hoặc đơn. Đảm bảo rằng không có khoảng trắng ở hai bên của dấu bằng.

my_string="Hello, How-To Geek World."
echo $my_string

Tạo và viết một biến chuỗi

Khi bạn đã tạo một biến, tên biến đó sẽ được thêm vào danh sách các từ hoàn thành tab của trình bao. Trong ví dụ này, gõ “my_” và nhấn phím “Tab” để nhập tên đầy đủ trên dòng lệnh.

Biến chỉ đọc

Đây là một declare lệnh mà chúng ta có thể sử dụng để khai báo các biến. Trong những trường hợp đơn giản, bạn không thực sự cần nó, nhưng sử dụng nó cho phép bạn sử dụng một số tùy chọn của lệnh. Có lẽ cái mà bạn sử dụng nhiều nhất là -r (chỉ đọc) tùy chọn. Điều này tạo ra một biến chỉ đọc không thể thay đổi được.

declare -r read_only_var="This is an immutable string!"

Nếu chúng tôi cố gắng gán một giá trị mới cho nó, nó sẽ không thành công.

read_only_var="A new string..."

Không thay đổi được biến chuỗi chỉ đọc

Ghi vào Cửa sổ đầu cuối

Chúng ta có thể ghi một số chuỗi vào cửa sổ đầu cuối bằng cách sử dụng echo hoặc printf để chúng xuất hiện như thể chúng là một chuỗi. Và chúng tôi không bị giới hạn ở các biến chuỗi của riêng mình, chúng tôi có thể kết hợp các biến môi trường vào các lệnh của mình.

user_account="Your user account is:"
echo $user_account $USER

Ghi hai chuỗi vào cửa sổ đầu cuối như thể chúng là một chuỗi

Nối các chuỗi

Toán tử cộng-bằng, +=, cho phép bạn “thêm” hai chuỗi lại với nhau. Nó được gọi là nối.

user_account="Your user account is:"
user_account+=$USER
echo $user_account

Nối các chuỗi với + =

Lưu ý rằng bạn không nhận được khoảng trắng tự động được thêm vào giữa các chuỗi được nối. Nếu bạn cần có khoảng trắng, bạn cần phải đặt một cách rõ ràng vào cuối chuỗi đầu tiên hoặc ở đầu chuỗi thứ hai.

user_account="Your user account is: "
user_account+=$USER
echo $user_account

Thêm khoảng trắng trước khi sử dụng + = để nối hai chuỗi

CÓ LIÊN QUAN: Cách đặt các biến môi trường trong Bash trên Linux

Đọc đầu vào của người dùng

Cũng như việc tạo các biến chuỗi có nội dung của chúng được xác định như một phần trong khai báo của chúng, chúng ta có thể đọc dữ liệu nhập của người dùng vào một biến chuỗi.

Các read lệnh đọc đầu vào của người dùng. Các -p (nhắc) tùy chọn ghi một lời nhắc vào cửa sổ đầu cuối. Đầu vào của người dùng được lưu trữ trong biến chuỗi. Trong ví dụ này, biến được gọi là user_file.

read -p "Open which file? " user_file
echo $user_file

Đọc đầu vào chuỗi người dùng

Nếu bạn không cung cấp một biến chuỗi để nắm bắt đầu vào, nó sẽ vẫn hoạt động. Đầu vào của người dùng sẽ được lưu trữ trong một biến có tên là REPLY.

read -p "Open which file? "
echo $REPLY

Đọc thông tin đầu vào của người dùng mà không cần cung cấp biến chuỗi

Thông thường, sẽ thuận tiện hơn nếu bạn cung cấp biến của riêng bạn và đặt cho nó một cái tên có ý nghĩa.

Thao tác chuỗi

Bây giờ chúng ta có các chuỗi của mình, cho dù được xác định tại thời điểm tạo, đọc từ đầu vào của người dùng hoặc được tạo bằng cách nối các chuỗi, chúng ta có thể bắt đầu thực hiện mọi việc với chúng.

Tìm độ dài chuỗi

Nếu việc biết độ dài của một chuỗi là quan trọng hoặc hữu ích, chúng ta có thể lấy nó bằng cách đặt trước tên biến bằng một hàm băm “#” Biểu tượng.

my_string="There are 39 characters in this string."
echo ${#my_string}

Nhận độ dài của một chuỗi

Chúng ta có thể trích xuất một chuỗi con từ một biến chuỗi bằng cách cung cấp điểm bắt đầu trong chuỗi và độ dài tùy chọn. Nếu chúng tôi không cung cấp độ dài, chuỗi con sẽ chứa mọi thứ từ điểm bắt đầu cho đến ký tự cuối cùng.

Điểm bắt đầu và độ dài theo sau tên biến, với dấu hai chấm “:” giữa họ. Lưu ý rằng các ký tự trong một biến chuỗi được đánh số bắt đầu từ số không.

long_string="Frankenstein or the Modern Prometheus"
substring=${long_string:0:12}
echo $substring
echo ${long_string:27}

Trích xuất chuỗi con từ đầu và cuối chuỗi

Một biến thể khác cho phép bạn loại bỏ một số ký tự từ đầu cuối của chuỗi. Về mặt hiệu quả, nó cho phép bạn đặt điểm bắt đầu và sử dụng số âm làm độ dài. Chuỗi con sẽ chứa các ký tự từ điểm bắt đầu đến cuối chuỗi, trừ đi số ký tự bạn đã chỉ định bằng số âm.

my_string="alphabetical"
echo ${my_string:5:-4}

Trích xuất một chuỗi con từ giữa một chuỗi

Trong mọi trường hợp, biến chuỗi ban đầu là không bị ảnh hưởng. Chuỗi con “được trích xuất” không thực sự bị xóa khỏi nội dung của biến.

Nhược điểm của việc sử dụng hiệu số ký tự là bạn cần biết trước vị trí của các chuỗi con bạn muốn trích xuất trong chuỗi.

Nếu chuỗi của bạn được phân cách bằng một ký tự lặp lại, bạn có thể trích xuất các chuỗi con mà không cần biết vị trí của chúng trong chuỗi, cũng như độ dài của chúng.

Để tìm kiếm từ phía trước của chuỗi, hãy theo dõi tên biến có dấu phần trăm kép, %%ký tự phân tách và dấu hoa thị, *. Các từ trong chuỗi này được phân cách bằng dấu cách.

long_string="first second third fourth fifth"
echo ${long_string%%' '*}

Trích xuất một chuỗi con từ phía trước của một chuỗi bằng dấu phân cách

Điều này trả về chuỗi con đầu tiên từ phía trước của chuỗi không chứa ký tự phân tách. Đây được gọi là tùy chọn chuỗi con ngắn.

Tùy chọn chuỗi con dài trả về phần phía trước của chuỗi cho đến chuỗi con được phân cách cuối cùng. Nói cách khác, nó bỏ qua chuỗi con được phân cách cuối cùng. Về mặt cú pháp, sự khác biệt duy nhất là nó sử dụng một dấu phần trăm duy nhất “%”Trong lệnh.

long_string="first second third fourth fifth"
echo ${long_string%' '*}

Trích xuất một chuỗi con dài từ phía trước của một chuỗi bằng dấu phân cách

Như bạn mong đợi, bạn có thể tìm kiếm theo cách tương tự từ cuối chuỗi. Thay vì dấu phần trăm, hãy sử dụng hàm băm “#”Và di chuyển dấu phân cách đến sau dấu hoa thị “*”Trong lệnh.

long_string="this.long.string.of.words.is.delimited.by.periods"
echo ${long_string##*.}

Trích xuất một chuỗi con từ cuối chuỗi bằng dấu phân cách

Đây là tùy chọn chuỗi con ngắn, nó cắt bỏ chuỗi con đầu tiên mà nó tìm thấy từ phía sau của chuỗi không chứa dấu phân cách.

long_string="this.long.string.of.words.is.delimited.by.periods"
echo ${long_string#*.}

Trích xuất một chuỗi con dài từ cuối chuỗi bằng dấu phân cách

Tùy chọn chuỗi con dài trả về phần phía sau của chuỗi lên đến dấu phân cách đầu tiên từ phía trước của chuỗi. Nói cách khác, nó bỏ qua chuỗi con được phân tách đầu tiên.

Thay thế chuỗi con

Việc hoán đổi các chuỗi con cho các chuỗi con khác rất dễ dàng. Định dạng là tên của chuỗi, chuỗi con sẽ được thay thế và chuỗi con sẽ được chèn vào, phân tách bằng dấu gạch chéo “/” nhân vật.

string="blue pig giggles"
echo ${string/pig/goat}

Thay thế một chuỗi con trong một chuỗi

Để giới hạn tìm kiếm ở cuối chuỗi, hãy đặt trước chuỗi tìm kiếm bằng dấu phần trăm “% ” tính cách.

string="blue pig giggles"
echo ${string/%giggles/chuckles}

Thay thế một chuỗi con vào cuối một chuỗi

Để giới hạn tìm kiếm ở đầu chuỗi, hãy đặt trước chuỗi tìm kiếm bằng một dấu thăng “#” tính cách.

string="blue pig giggles"
echo ${string/#blue/yellow}

Thay thế một chuỗi con khi bắt đầu một chuỗi

Một chuỗi là một điều linh hoạt

Nếu một chuỗi không chỉ như cách bạn muốn hoặc cần nó, những công cụ này sẽ giúp bạn định dạng lại nó sao cho phù hợp với nhu cầu của bạn. Đối với các biến đổi phức tạp, hãy sử dụng các tiện ích chuyên dụng, nhưng đối với các chỉnh sửa nhỏ, hãy sử dụng trình bao được tích hợp sẵn và tránh chi phí tải và chạy công cụ bên ngoài.

CÓ LIÊN QUAN: Mọi điều bạn từng muốn biết về inodes trên Linux



[ad_2]

Đánh giá dịch vụ post
Chat Zalo
0979106855