Làm thế nào để thay thế một chuỗi trong một tệp trong Bash

How Replace String File Bash



Là một lập trình viên, bạn có thể cần phải làm việc với các loại tệp khác nhau để lưu trữ dữ liệu tạm thời hoặc vĩnh viễn. Đôi khi, bạn có thể cần phải thay thế một phần của tệp hoặc sửa đổi nội dung cụ thể của tệp. Để thay thế nội dung trong một tệp, bạn phải tìm kiếm chuỗi tệp cụ thể. Các nhưng lệnh được sử dụng để thay thế bất kỳ chuỗi nào trong tệp bằng tập lệnh bash. Lệnh này có thể được sử dụng theo nhiều cách khác nhau để thay thế nội dung của tệp trong bash. Các ‘Awk Lệnh ’cũng có thể được sử dụng để thay thế chuỗi trong tệp. Hướng dẫn này sẽ chỉ cho bạn cách thay thế bất kỳ giá trị chuỗi nào từ tệp bằng cách sử dụng tập lệnh bash. Sales.txt với nội dung sau được tạo để hiển thị các hoạt động thay thế.

Sales.txt







Ngày Số tiền Khu vực

01/01/2020 60000 Dhaka
10/02/2020 76000 Rajshahi
21/03/2020 54000 Khulna
15/04/2020 78000 Chandpur
17/05/2020 45000 Bogra
02/06/2020 67000 Comilla

Thay thế chuỗi trong tệp bằng lệnh `sed`

Cú pháp cơ bản của ` quyến rũ Lệnh `để thay thế chuỗi cụ thể trong tệp được đưa ra bên dưới.



Cú pháp



quyến rũ -tôi 's / search_string / Replace_string /'tên tập tin

Mọi phần của cú pháp trên được giải thích bên dưới.





'-tôi' tùy chọn được sử dụng để sửa đổi nội dung của tệp gốc bằng chuỗi thay thế nếu chuỗi tìm kiếm tồn tại trong tệp.

'NS' chỉ ra lệnh thay thế.



'chuỗi tìm kiếm' chứa giá trị chuỗi sẽ được tìm kiếm trong tệp để thay thế.

‘Replace_string’ chứa giá trị chuỗi sẽ được sử dụng để thay thế nội dung của tệp phù hợp với 'chuỗi tìm kiếm' giá trị.

'Tên tệp' chứa tên tệp nơi tìm kiếm và thay thế sẽ được áp dụng.

Ví dụ 1: Thay thế tệp bằng lệnh ‘sed’

Trong tập lệnh sau, văn bản tìm kiếm và thay thế sẽ được lấy từ người dùng. Nếu chuỗi tìm kiếm tồn tại trong ‘Sales.txt’, thì nó sẽ được thay thế bằng chuỗi thay thế. Tại đây, một tìm kiếm phân biệt chữ hoa chữ thường sẽ được thực hiện.

#! / bin / bash

# Gán tên tệp
tên tập tin='Sales.txt'

# Lấy chuỗi tìm kiếm
đọc -P 'Nhập chuỗi tìm kiếm:'Tìm kiếm

# Lấy chuỗi thay thế
đọc -P 'Nhập chuỗi thay thế:'thay thế

nếu như [[ $ search !='' && $ thay thế !='' ]];sau đó
quyến rũ -tôi 'NS/$ search/$ thay thế/ ' $ filename
thì là ở

Đầu ra

Ví dụ 2: Thay thế Tệp bằng Lệnh ‘sed’ bằng Cờ ‘g’ và ‘i’

Tập lệnh sau sẽ hoạt động giống như ví dụ trước, nhưng chuỗi tìm kiếm sẽ được tìm kiếm trên toàn cầu cho cờ ‘g’ và tìm kiếm không phân biệt chữ hoa chữ thường sẽ được thực hiện cho cờ ‘i’.

#! / bin / bash

# Lấy chuỗi tìm kiếm
đọc -P 'Nhập chuỗi tìm kiếm:'Tìm kiếm

# Lấy chuỗi thay thế
đọc -P 'Nhập chuỗi thay thế:'thay thế

nếu như [[ $ search !='' && $ thay thế !='' ]];sau đó
quyến rũ -tôi 'NS/$ search/$ thay thế/đưa cho' $ 1
thì là ở

Đầu ra

Ví dụ 3: Thay thế tệp bằng lệnh ‘sed’ và Mẫu chữ số phù hợp

Tập lệnh sau sẽ tìm kiếm tất cả nội dung số trong một tệp và sẽ thay thế nội dung bằng cách thêm ‘$’ ký hiệu ở đầu các số.

#! / bin / bash

# Kiểm tra giá trị đối số dòng lệnh có tồn tại hay không
nếu như [ $ 1 !='' ];sau đó
# Tìm kiếm tất cả chuỗi chứa các chữ số và thêm $
quyến rũ -tôi 's / b [0-9] {5 } b / $ & / g' $ 1
thì là ở

Đầu ra

Thay thế chuỗi trong tệp bằng lệnh `awk`

Các ' awk ’ lệnh là một cách khác để thay thế chuỗi trong tệp, nhưng lệnh này không thể cập nhật tệp gốc trực tiếp như lệnh ‘ nhưng chỉ huy.

Ví dụ 4: Thay thế tệp bằng lệnh ‘awk’

Tập lệnh sau sẽ lưu trữ nội dung cập nhật trong temp.txt tệp sẽ được đổi tên bằng tệp gốc.

#! / bin / bash

# Kiểm tra giá trị đối số dòng lệnh có tồn tại hay không
nếu như [ $ 1 !='' ];sau đó
# Tìm kiếm tất cả chuỗi dựa trên ngày
awk '{sub ('02 / 06/2020', '12/06/2020')} 1 ' $ 1 >temp.txt&& mvtemp.txt$ 1
thì là ở

Đầu ra

Phần kết luận

Bài viết này đã hướng dẫn bạn cách sử dụng tập lệnh bash để thay thế các chuỗi cụ thể trong một tệp. Nhiệm vụ thay thế một chuỗi trong tệp sẽ trở nên dễ dàng hơn đối với bạn sau khi thực hành các ví dụ trên.