Ví dụ về lệnh 50 `but`

50 Sed Command Examples



`sed` là một tính năng xử lý văn bản hữu ích của GNU / Linux. Dạng đầy đủ của `sed` là Stream Editor. Nhiều loại tác vụ xử lý văn bản đơn giản và phức tạp có thể được thực hiện rất dễ dàng bằng cách sử dụng lệnh `sed`. Bất kỳ chuỗi cụ thể nào trong văn bản hoặc tệp đều có thể được tìm kiếm, thay thế và xóa bằng cách sử dụng biểu thức chính quy với lệnh sed. Nhưng các lệnh này thực hiện tất cả các loại sửa đổi tạm thời và nội dung tệp gốc không bị thay đổi theo mặc định. Người dùng có thể lưu trữ nội dung đã sửa đổi vào một tệp khác nếu cần. Cách sử dụng cơ bản của lệnh `sed` được giải thích trong hướng dẫn này bằng cách sử dụng 50 ví dụ duy nhất. Trước khi bắt đầu hướng dẫn này, bạn phải kiểm tra phiên bản đã cài đặt của` sed` trong hệ điều hành của mình bằng cách chạy lệnh sau. Hướng dẫn được thiết kế dựa trên GNU sed. Vì vậy, phiên bản này của `sed` sẽ được yêu cầu để thực hành các ví dụ được hiển thị trong hướng dẫn này.

$quyến rũ --phiên bản

Kết quả sau đây cho thấy GNU Sed của phiên bản 4.4 đã được cài đặt trong hệ thống.









Cú pháp:



quyến rũ [tùy chọn]...[kịch bản] [tập tin]

Nếu không có tên tệp nào được cung cấp bằng lệnh `sed`, thì tập lệnh sẽ hoạt động trên dữ liệu đầu vào chuẩn. Tập lệnh `sed` có thể được thực thi mà không có bất kỳ tùy chọn nào.





Nội dung :

  1. Thay thế văn bản cơ bản bằng cách sử dụng 'sed'
  2. Thay thế tất cả các trường hợp của văn bản trong một dòng cụ thể của tệp bằng cách sử dụng tùy chọn ‘g’
  3. Chỉ thay thế lần xuất hiện thứ hai của một trận đấu trên mỗi dòng
  4. Chỉ thay thế lần xuất hiện cuối cùng của một kết quả phù hợp trên mỗi dòng
  5. Thay thế kết quả phù hợp đầu tiên trong tệp bằng văn bản mới
  6. Thay thế kết quả phù hợp cuối cùng trong tệp bằng văn bản mới
  7. Loại bỏ dấu gạch chéo ngược trong các lệnh thay thế để quản lý tìm kiếm và thay thế đường dẫn tệp
  8. Thay thế tất cả đường dẫn đầy đủ của tệp chỉ bằng tên tệp không có thư mục
  9. Văn bản thay thế nhưng chỉ khi một số văn bản khác được tìm thấy trong chuỗi
  10. Văn bản thay thế nhưng chỉ khi một số văn bản khác không được tìm thấy trong chuỗi
  11. Thêm chuỗi trước sau mẫu phù hợp bằng cách sử dụng ‘ 1 '
  12. Xóa các dòng phù hợp
  13. Xóa dòng khớp và 2 dòng sau dòng khớp
  14. Xóa tất cả các khoảng trắng ở cuối dòng văn bản
  15. Xóa tất cả các dòng có khớp hai lần trên dòng
  16. Xóa tất cả các dòng có khoảng trắng duy nhất
  17. Xóa tất cả các ký tự không in được
  18. Nếu có sự trùng khớp trong dòng, hãy nối một thứ gì đó vào cuối dòng
  19. Nếu có sự trùng khớp trong dòng chèn dòng trước trận đấu
  20. Nếu có khớp trong dòng chèn dòng sau khớp
  21. Nếu không có kết quả phù hợp, hãy nối một thứ gì đó vào cuối dòng
  22. Nếu không có kết quả phù hợp, hãy xóa dòng
  23. Nhân bản văn bản phù hợp sau khi thêm khoảng trắng sau văn bản
  24. Thay thế một trong danh sách các chuỗi bằng chuỗi mới
  25. Thay thế một chuỗi đã so khớp bằng một chuỗi có chứa các dòng mới
  26. Xóa các dòng mới khỏi tệp và chèn dấu phẩy vào cuối mỗi dòng
  27. Xóa dấu phẩy và thêm dòng mới để chia văn bản thành nhiều dòng
  28. Tìm đối sánh không phân biệt chữ hoa chữ thường và xóa dòng
  29. Tìm đối sánh không phân biệt chữ hoa chữ thường và thay thế bằng văn bản mới
  30. Tìm đối sánh không phân biệt chữ hoa chữ thường và thay thế bằng tất cả chữ hoa của cùng một văn bản
  31. Tìm đối sánh không phân biệt chữ hoa chữ thường và thay thế bằng tất cả chữ thường của cùng một văn bản
  32. Thay thế tất cả các ký tự viết hoa trong văn bản bằng các ký tự viết thường
  33. Tìm kiếm số trong dòng và thêm ký hiệu tiền tệ sau số
  34. Thêm dấu phẩy vào các số có nhiều hơn 3 chữ số
  35. Thay thế các ký tự tab bằng 4 ký tự khoảng trắng
  36. Thay thế 4 ký tự khoảng trắng liên tiếp bằng một ký tự tab
  37. Cắt ngắn tất cả các dòng còn 80 ký tự đầu tiên
  38. Tìm kiếm một chuỗi regex và thêm một số văn bản chuẩn vào sau nó
  39. Tìm kiếm chuỗi regex và bản sao thứ hai của chuỗi được tìm thấy sau nó
  40. Chạy các tập lệnh `sed` nhiều dòng từ một tệp
  41. Khớp một mẫu nhiều dòng và thay thế bằng văn bản nhiều dòng mới
  42. Thay thế thứ tự của hai từ phù hợp với một mẫu
  43. Sử dụng nhiều lệnh sed từ dòng lệnh
  44. Kết hợp sed với các lệnh khác
  45. Chèn một dòng trống trong tệp
  46. Xóa tất cả các ký tự chữ-số khỏi mỗi dòng của tệp.
  47. Sử dụng ‘&’ để khớp với chuỗi
  48. Chuyển đổi cặp từ
  49. Viết hoa ký tự đầu tiên của mỗi từ
  50. In số dòng của tệp

1. Thay thế văn bản cơ bản bằng cách sử dụng 'sed'

Bất kỳ phần cụ thể nào của văn bản đều có thể được tìm kiếm và thay thế bằng cách sử dụng mẫu tìm kiếm và thay thế bằng lệnh `sed`. Trong ví dụ sau, ‘s’ biểu thị tác vụ tìm kiếm và thay thế. Từ ‘Bash’ sẽ được tìm kiếm trong văn bản, Bash Scripting Language và nếu từ tồn tại trong văn bản thì nó sẽ được thay thế bằng từ ‘Perl’.



$quăng đi 'Ngôn ngữ kịch bản Bash' | quyến rũ 's / Bash / Perl /'

Đầu ra:

Từ 'Bash' tồn tại trong văn bản. Vì vậy, đầu ra là 'Perl Scripting Language'.

Lệnh `sed` cũng có thể được sử dụng để thay thế bất kỳ phần nào của nội dung tệp. Tạo một tệp văn bản có tên weekday.txt với nội dung sau đây.

weekday.txt

thứ hai
Thứ ba
thứ Tư
Thứ năm
thứ sáu
Thứ bảy
chủ nhật

Lệnh sau sẽ tìm kiếm và thay thế văn bản ‘Chủ nhật’ bằng văn bản ‘Chủ nhật là ngày nghỉ’.

$con mèoweekday.txt
$quyến rũ 's / Sunday / Sunday là ngày lễ /'weekday.txt

Đầu ra:

‘Chủ nhật’ tồn tại trong tệp weekday.txt và từ này được thay thế bằng văn bản, ‘Chủ nhật là ngày lễ’ sau khi thực hiện lệnh `sed` ở trên.

Lên đầu trang

2. Thay thế tất cả các trường hợp của văn bản trong một dòng cụ thể của tệp bằng tùy chọn ‘g’

Tùy chọn ‘g’ được sử dụng trong lệnh `sed` để thay thế tất cả các lần xuất hiện của mẫu khớp. Tạo một tệp văn bản có tên python.txt với nội dung sau để biết công dụng của tùy chọn ‘g’. Tệp này chứa từ. 'Python' nhiều lần.

python.txt

Python là một ngôn ngữ rất phổ biến.
Python rất dễ sử dụng. Python rất dễ học.
Python là một ngôn ngữ đa nền tảng

Lệnh sau sẽ thay thế tất cả các lần xuất hiện của ‘ Python 'Trong dòng thứ hai của tệp, python.txt . Ở đây, 'Python' xảy ra hai lần ở dòng thứ hai.

$ mèo trăn.txt
$ sed'2 s / Python / perl / g'con trăn.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy tập lệnh. Ở đây, Tất cả sự xuất hiện của ‘Python’ trong dòng thứ hai được thay thế bằng ‘Perl’.

Lên đầu trang

3. Chỉ thay thế lần xuất hiện thứ hai của một trận đấu trên mỗi dòng

Nếu bất kỳ từ nào xuất hiện nhiều lần trong một tệp thì sự xuất hiện cụ thể của từ đó trong mỗi dòng có thể được thay thế bằng cách sử dụng lệnh `sed` với số lần xuất hiện. Lệnh `sed` sau sẽ thay thế lần xuất hiện thứ hai của mẫu tìm kiếm trong mỗi dòng của tệp, python.txt .

$ sed's / Python / perl / g2'con trăn.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy lệnh trên. Đây, văn bản tìm kiếm, ‘ Python ' chỉ xuất hiện hai lần trong dòng thứ hai và nó được thay thế bằng văn bản, ‘ Perl '.

Lên đầu trang

4. Chỉ thay thế lần xuất hiện cuối cùng của một trận đấu trên mỗi dòng

Tạo một tệp văn bản có tên lang.txt với nội dung sau đây.

lang.txt

Ngôn ngữ lập trình Bash. Ngôn ngữ lập trình Python. Ngôn ngữ lập trình Perl.
Ngôn ngữ đánh dấu siêu văn bản.
Ngôn ngữ đánh dấu có thể mở rộng.

$quyến rũ 's / (. * ) Lập trình / 1Scripting /'lang.txt

Lên đầu trang

5. Thay thế kết hợp đầu tiên trong tệp bằng văn bản mới

Lệnh sau sẽ chỉ thay thế kết quả phù hợp đầu tiên của mẫu tìm kiếm, ‘ Python ‘Bằng văn bản, ‘Perl ‘. Ở đây, '1' được sử dụng để khớp với lần xuất hiện đầu tiên của mẫu.

$ mèo trăn.txt
$ sed'1 s / Python / perl /'con trăn.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên. Ở đây. sự xuất hiện đầu tiên của ‘Python’ trong dòng đầu tiên được thay thế bằng ‘perl’.

Lên đầu trang

6. Thay thế kết quả phù hợp cuối cùng trong tệp bằng văn bản mới

Lệnh sau sẽ thay thế lần xuất hiện cuối cùng của mẫu tìm kiếm, ‘Python ‘Bằng văn bản, ‘Bash’. Ở đây, ‘$’ biểu tượng được sử dụng để khớp với lần xuất hiện cuối cùng của mẫu.

$ mèo trăn.txt
$ sed -e'$ s / Python / Bash /'con trăn.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên.

Lên đầu trang

7. Loại bỏ dấu gạch chéo ngược trong các lệnh thay thế để quản lý tìm kiếm và thay thế đường dẫn tệp

Cần phải thoát khỏi dấu gạch chéo ngược trong đường dẫn tệp để tìm kiếm và thay thế. Lệnh sau của `sed` sẽ thêm dấu gạch chéo ngược () vào đường dẫn tệp.

$quăng đi /Trang Chủ/ubuntu/mã số/perl/add.pl| quyến rũ 's; /; \ /; g'

Đầu ra:

Đường dẫn tệp, ‘/Home/ubuntu/code/perl/add.pl’ được cung cấp dưới dạng đầu vào trong lệnh `sed` và đầu ra sau sẽ xuất hiện sau khi chạy lệnh trên.

Lên đầu trang

8. Thay thế tất cả đường dẫn đầy đủ của tệp chỉ bằng tên tệp không có thư mục

Tên tệp có thể được truy xuất từ ​​đường dẫn tệp rất dễ dàng bằng cách sử dụng ` tên cơ sở` chỉ huy. Lệnh `sed` cũng có thể được sử dụng để lấy tên tệp từ đường dẫn tệp. Lệnh sau sẽ lấy tên tệp chỉ từ đường dẫn tệp được cung cấp bởi lệnh `echo`.

$quăng đi '/home/ubuntu/temp/myfile.txt' | quyến rũ 'NS/.*///'

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy lệnh trên. Đây, tên tệp, ‘ myfile.txt ' được in dưới dạng đầu ra.

Lên đầu trang

9. Văn bản thay thế nhưng chỉ khi một số văn bản khác được tìm thấy trong chuỗi

Tạo một tệp có tên là ‘ dept.txt ' với nội dung sau để thay thế bất kỳ văn bản nào dựa trên văn bản khác.

dept.txt

Danh sách Tổng số học sinh:

CSE - Đếm
EEE - Đếm
Dân sự - Đếm

Hai lệnh thay thế được sử dụng trong lệnh `sed` sau đây. Đây, văn bản, ' Đếm ‘Sẽ được thay thế bởi 100 trong dòng chứa văn bản, ‘CSE ‘Và văn bản,‘ Đếm' sẽ được thay thế bởi 70 trong dòng chứa mẫu tìm kiếm, ‘ NS' .

$con mèodept.txt
$quyến rũ -Và '/ CSE / s / Đếm / 100 /; / EEE / s / Đếm / 70 /; 'dept.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên.

Lên đầu trang

10. Văn bản thay thế nhưng chỉ khi một số văn bản khác không được tìm thấy trong chuỗi

Lệnh `sed` sau đây sẽ thay thế giá trị‘ Đếm ’trong dòng không chứa văn bản,‘ CSE ’. dept.txt tệp chứa hai dòng không chứa văn bản, ‘CSE’. Nên ' Đếm ‘Văn bản sẽ được thay thế bằng 80 trong hai dòng.

$con mèodept.txt
$quyến rũ -tôi -Và '/ CSE /! s / Đếm / 80 /; 'dept.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên.

Lên đầu trang

11. Thêm chuỗi vào trước và sau mẫu phù hợp bằng cách sử dụng ‘ 1’

Chuỗi các mẫu phù hợp của lệnh `sed` được ký hiệu là‘ 1 ’,‘ 2 ’, v.v. Lệnh `sed` sau đây sẽ tìm kiếm mẫu,‘ Bash ’và nếu mẫu phù hợp thì nó sẽ được truy cập bởi‘ 1 ′ trong phần thay thế văn bản. Tại đây, văn bản, ‘Bash’ được tìm kiếm trong văn bản đầu vào và một văn bản được thêm vào trước và một văn bản khác được thêm vào sau ‘ 1’.

$quăng đi 'Ngôn ngữ bash' | quyến rũ 's / (Bash ) / Học lập trình 1 /'

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy lệnh trên. Ở đây, ' Học' văn bản được thêm vào trước ‘Bash’ và ' lập trình Văn bản 'được thêm vào sau' Bash '.

Lên đầu trang

12. Xóa các dòng phù hợp

'NS' tùy chọn được sử dụng trong lệnh `sed` để xóa bất kỳ dòng nào khỏi tệp. Tạo một tệp có tên os.txt và thêm nội dung sau để kiểm tra chức năng của 'NS' Lựa chọn.

cat os.txt

các cửa sổ
Linux
Android
BẠN

Lệnh `sed` sau đây sẽ xóa các dòng đó khỏi os.txt tệp có chứa văn bản, ‘OS’.

$con mèoos.txt
$quyến rũ '/ D'os.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên.

Lên đầu trang

13. Xóa dòng khớp và 2 dòng sau dòng khớp

Lệnh sau sẽ xóa ba dòng khỏi tệp os.txt nếu mô hình, ‘ Linux ' được tìm thấy. os.txt chứa văn bản, ‘Linux ‘Ở dòng thứ hai. Vì vậy, dòng này và hai dòng tiếp theo sẽ bị xóa.

$quyến rũ '/ Linux /, + 2d'os.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy lệnh trên.

Lên đầu trang

14. Xóa tất cả các khoảng trắng ở cuối dòng văn bản

Sử dụng [:chỗ trống:] lớp có thể được sử dụng để xóa khoảng trắng và tab khỏi văn bản hoặc nội dung của bất kỳ tệp nào. Lệnh sau sẽ xóa khoảng trắng ở cuối mỗi dòng của tệp, os.txt.

$con mèoos.txt
$quyến rũ 's / [[: blank:]] * $ //'os.txt

Đầu ra:

os.txt chứa các dòng trống sau mỗi dòng bị xóa bởi lệnh `sed` ở trên.

Lên đầu trang

15. Xóa tất cả các dòng có khớp hai lần trên dòng

Tạo một tệp văn bản có tên, input.txt với nội dung sau và xóa những dòng của tệp có chứa mẫu tìm kiếm hai lần.

input.txt

PHP là một ngôn ngữ kịch bản phía máy chủ.
PHP là một ngôn ngữ mã nguồn mở và PHP có phân biệt chữ hoa chữ thường.
PHP độc lập với nền tảng.

Văn bản ‘PHP’ chứa hai lần trong dòng thứ hai của tệp, input.txt . Hai lệnh `sed` được sử dụng trong ví dụ này để loại bỏ những dòng có chứa mẫu‘ php ' hai lần. Lệnh `sed` đầu tiên sẽ thay thế lần xuất hiện thứ hai của‘ php ’trong mỗi dòng bằng‘ dl ‘Và gửi đầu ra vào lệnh` sed` thứ hai làm đầu vào. Lệnh `sed` thứ hai sẽ xóa những dòng có chứa văn bản,‘ dl '.

$con mèoinput.txt
$quyến rũ 's / php / dl / i2; t'input.txt| quyến rũ '/ dl / d'

Đầu ra:

input.txt tệp có hai dòng chứa mẫu, ‘Php’ hai lần. Vì vậy, kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên.

Lên đầu trang

16. Xóa tất cả các dòng chỉ có khoảng trắng

Chọn bất kỳ tệp nào chứa các dòng trống trong nội dung để kiểm tra ví dụ này. input.txt tệp được tạo trong ví dụ trước, chứa hai dòng trống có thể bị xóa bằng cách sử dụng lệnh `sed` sau đây. Ở đây, ‘^ $’ được sử dụng để tìm ra các dòng trống trong tệp, input.txt.

$con mèoinput.txt
$quyến rũ '/ ^ $ / d'input.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên.

Lên đầu trang

17. Xóa tất cả các ký tự không in được

Các ký tự không in được có thể bị xóa khỏi bất kỳ văn bản nào bằng cách thay thế các ký tự không in được bằng không. Lớp [: print:] được sử dụng trong ví dụ này để tìm ra các ký tự không thể in được. ‘ T’ là một ký tự không in được và không thể phân tích cú pháp trực tiếp bằng lệnh `echo`. Đối với điều này, ký tự ‘ t’ được gán trong một biến, $ tab được sử dụng trong lệnh `echo`. Đầu ra của lệnh `echo` được gửi trong lệnh` sed` sẽ xóa ký tự ‘ t’ khỏi đầu ra.

$chuyển hướng= $'NS'
$quăng đi 'Xin chào$ tabWorld'
$quăng đi 'Xin chào$ tabWorld' | quyến rũ 's / [^ [: print:]] // g'

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên. Lệnh `echo đầu tiên sẽ in kết quả ra với khoảng cách tab và lệnh` sed` sẽ in đầu ra sau khi loại bỏ khoảng trắng.

Lên đầu trang

18. Nếu có một kết quả phù hợp trong dòng, hãy nối một thứ gì đó vào cuối dòng

Lệnh sau sẽ thêm '10' vào cuối dòng chứa văn bản, 'Windows' trong os.txt tập tin.

$con mèoos.txt
$quyến rũ '/ Windows / s / $ / 10 /'os.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy lệnh.

Lên đầu trang

19. Nếu có sự trùng khớp trong dòng, hãy chèn một dòng trước văn bản

Lệnh `sed` sau sẽ tìm kiếm văn bản,‘ PHP độc lập với nền tảng ' bên trong input.txt tệp được tạo trước đó. Nếu tệp chứa văn bản này trong bất kỳ dòng nào thì ' PHP là một ngôn ngữ thông dịch ' sẽ được chèn trước dòng đó.

$con mèoinput.txt
$quyến rũ '/ PHP độc lập với nền tảng / s / ^ / PHP là ngôn ngữ thông dịch. N /'input.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên.

Lên đầu trang

20. Nếu có một dòng trùng khớp, hãy chèn một dòng sau dòng đó

Lệnh `sed` sau sẽ tìm kiếm văn bản,‘ Linux ' Trong tập tin os.txt và nếu văn bản tồn tại trong bất kỳ dòng nào thì văn bản mới, ‘ Ubuntu ‘Sẽ được chèn sau dòng đó.

$con mèoos.txt
$quyến rũ 's / Linux / & nUbuntu /'os.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên.

Lên đầu trang

21. Nếu không có kết quả phù hợp, hãy nối một thứ gì đó vào cuối dòng

Lệnh `sed` sau sẽ tìm kiếm các dòng đó trong os.txt không chứa văn bản, ‘Linux’ và nối văn bản, ‘ Hệ điều hành ‘Ở cuối mỗi dòng. Ở đây, ' $ Ký hiệu ‘được sử dụng để xác định dòng nơi văn bản mới sẽ được nối vào.

$con mèoos.txt
$quyến rũ '/ Linux /! S / $ / Hệ điều hành / 'os.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên. Ba dòng tồn tại trong tệp os.txt không chứa văn bản, ‘Linux’ và văn bản mới được thêm vào cuối các dòng này.

Lên đầu trang

22. Nếu không trùng khớp xóa dòng

Tạo một tệp có tên web.txt và thêm nội dung sau và xóa các dòng không chứa mẫu phù hợp. web.txt HTML 5JavaScriptCSSPHPMySQLJQuery Lệnh `sed` sau sẽ tìm kiếm và xóa những dòng không chứa văn bản,‘ CSS ’. $ cat web.txt $ sed ‘/ CSS /! d’ web.txt Đầu ra: Kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên. Có một dòng tồn tại trong tệp chứa văn bản, ‘CSE’. Vì vậy, đầu ra chỉ chứa một dòng.

Lên đầu trang

23. Nhân bản văn bản phù hợp sau khi thêm khoảng trắng sau văn bản

Lệnh `sed` sau sẽ tìm kiếm từ,‘ to ’trong tệp, python.txt và nếu từ tồn tại thì từ tương tự sẽ được chèn sau từ tìm kiếm bằng cách thêm dấu cách. Ở đây, '&' biểu tượng được sử dụng để nối văn bản trùng lặp.

$con mèopython.txt
$quyến rũ -Và 's / to / & to / g'python.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh. Ở đây, từ 'to' được tìm kiếm trong tệp, python.txt và từ này tồn tại ở dòng thứ hai của tệp này. Vì thế, 'đến 'Với khoảng trắng được thêm vào sau văn bản phù hợp.

Lên đầu trang

24. Thay thế một danh sách các chuỗi bằng chuỗi mới

Bạn phải tạo hai tệp danh sách để thử nghiệm ví dụ này. Tạo một tệp văn bản có tên list1.txt và thêm nội dung sau.

cat list1.txt

1001=>Jafar Ali
1023=>Nir Hossain
1067=>John michel

Tạo một tệp văn bản có tên list2.txt và thêm nội dung sau.

$ cat list2.txt

1001Điểm trung bình CSE3,63
1002Điểm trung bình CSE3,24
1023Điểm trung bình CSE3,11
1067Điểm trung bình CSE3,84

Lệnh `sed` sau sẽ khớp với cột đầu tiên của hai tệp văn bản được hiển thị ở trên và thay thế văn bản phù hợp bằng giá trị của cột thứ ba của tệp list1.txt.

$con mèolist1.txt
$con mèolist2.txt
$quyến rũ ``con mèolist1.txt| awk '{print' -e s / '$ 1' / '$ 3' / '}'``<<<'`cat list2.txt`'

Đầu ra:

1001, 1023 và 1067 trong tổng số list1.txt khớp tệp với ba dữ liệu của list2.txt tệp và các giá trị này được thay thế bằng tên tương ứng của cột thứ ba của list1.txt .

Lên đầu trang

25. Thay thế chuỗi đã so khớp bằng một chuỗi có chứa các dòng mới

Lệnh sau sẽ lấy đầu vào từ lệnh `echo` và tìm kiếm từ đó, 'Python' trong văn bản. Nếu từ tồn tại trong văn bản thì một văn bản mới, ‘Văn bản được Thêm vào’ sẽ được chèn với dòng mới. $ echo Bash Perl Python Java PHP ASP | sed ‘s / Python / Văn bản đã thêm n /’ Đầu ra: Kết quả sau sẽ xuất hiện sau khi chạy lệnh trên.

Lên đầu trang

26. Xóa dòng mới khỏi tệp và chèn dấu phẩy vào cuối mỗi dòng

Lệnh `sed` sau sẽ thay thế mỗi dòng mới bằng dấu phẩy trong tệp os.txt . Ở đây, -Với tùy chọn được sử dụng để phân tách dòng bằng ký tự NULL.

$quyến rũ -Với 's / n /, / g'os.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy lệnh trên.

Lên đầu trang

27. Bỏ dấu phẩy và thêm dòng mới để chia văn bản thành nhiều dòng

Lệnh `sed` sau sẽ lấy dòng được phân tách bằng dấu phẩy từ lệnh` echo` làm đầu vào và thay thế dấu phẩy bằng dòng mới.

$quăng đi 'Kaniz Fatema, thứ 30, đợt' | quyến rũ 'NS/,/ /NS'

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy lệnh trên. Văn bản đầu vào chứa ba dữ liệu được phân tách bằng dấu phẩy được thay thế bằng dòng mới và được in thành ba dòng.

Lên đầu trang

28. Tìm đối sánh không phân biệt chữ hoa chữ thường và xóa dòng

‘I’ được sử dụng trong lệnh `sed` cho đối sánh không phân biệt chữ hoa chữ thường biểu thị trường hợp bỏ qua. Lệnh `sed` sau sẽ tìm kiếm dòng chứa từ, ‘Linux ‘Và xóa dòng khỏi os.txt tập tin.

$con mèoos.txt
$quyến rũ '/ linux / Id'os.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy lệnh trên. os.txt chứa từ, 'Linux' phù hợp với mẫu, 'linux' cho tìm kiếm không phân biệt chữ hoa chữ thường và đã bị xóa.

Lên đầu trang

29. Tìm đối sánh không phân biệt chữ hoa chữ thường và thay thế bằng văn bản mới

Lệnh `sed` sau sẽ lấy đầu vào từ lệnh` echo` và thay thế từ, ‘bash’ bằng từ, ‘PHP’.

$quăng đi 'Tôi thích lập trình bash' | quyến rũ 's / Bash / PHP / i'

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy lệnh trên. Ở đây, từ, ‘Bash’ được kết hợp với từ, ‘bash’ cho tìm kiếm không phân biệt chữ hoa chữ thường và được thay thế bằng từ, ‘PHP’.

Lên đầu trang

30. Tìm kết hợp không phân biệt chữ hoa chữ thường và thay thế bằng tất cả các chữ hoa của cùng một văn bản

‘ U’ được sử dụng trong `sed` để chuyển đổi bất kỳ văn bản nào thành tất cả các chữ cái viết hoa. Lệnh `sed` sau sẽ tìm kiếm từ, ‘Linux ' bên trong os.txt và nếu từ tồn tại thì nó sẽ thay thế từ đó bằng tất cả các chữ cái viết hoa.

$con mèoos.txt
$quyến rũ 's / (linux ) / U 1 / Ig'os.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên. Từ 'Linux' của tệp os.txt được thay thế bằng từ 'LINUX'.

Lên đầu trang

31. Tìm đối sánh không phân biệt chữ hoa chữ thường và thay thế bằng tất cả chữ thường của cùng một văn bản

'NS' được sử dụng trong `sed` để chuyển đổi bất kỳ văn bản nào thành tất cả các chữ cái thường. Lệnh `sed` sau sẽ tìm kiếm từ, ‘Linux’ bên trong os.txt tập tin và thay thế từ bằng tất cả các chữ cái thường.

$con mèoos.txt
$quyến rũ 's / (linux ) / L 1 / Ig'os.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên. Từ 'Linux' được thay thế bằng từ 'linux' ở đây.

Lên đầu trang

32. Thay thế tất cả các ký tự viết hoa của văn bản bằng các ký tự viết thường

Lệnh `sed` sau sẽ tìm kiếm tất cả các ký tự viết hoa trong os.txt và thay thế các ký tự bằng chữ thường bằng cách sử dụng ‘ L’.

$con mèoos.txt
$quyến rũ 's / (. * ) / L 1 /'os.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên.

Lên đầu trang

33. Tìm kiếm số trong dòng và thêm bất kỳ ký hiệu tiền tệ nào trước con số

Tạo một tệp có tên items.txt với nội dung sau đây.

items.txt

HDD 100
Màn hình 80
Chuột 10

Lệnh `sed` sau sẽ tìm kiếm số trong mỗi dòng của items.txt và thêm ký hiệu tiền tệ, ‘$’ trước mỗi số.

$con mèoitems.txt
$quyến rũ 's / ([0-9] ) / $ 1 / g'items.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên. Ở đây, ký hiệu ‘$’ được thêm vào trước số của mỗi dòng.

Lên đầu trang

34. Thêm dấu phẩy vào các số có nhiều hơn 3 chữ số

Lệnh `sed` sau sẽ lấy một số làm đầu vào từ lệnh` echo` và thêm dấu phẩy sau mỗi nhóm ba chữ số đếm từ bên phải. Ở đây, ‘: a’ chỉ ra nhãn và ‘ta’ được sử dụng để lặp lại quá trình nhóm.

$quăng đi '5098673' | quyến rũ -Và:đến-Và của / (. * [0-9] ) ([0-9] {3 } ) / 1, 2 /; ta '

Đầu ra:

Số 5098673 được đưa ra trong lệnh `echo` và lệnh` sed` tạo ra số 5,098,673 bằng cách thêm dấu phẩy sau mỗi nhóm ba chữ số.

Lên đầu trang

35. Thay thế ký tự tab bằng 4 ký tự khoảng trắng

Lệnh `sed` sau sẽ thay thế mỗi ký tự tab ( t) bằng bốn ký tự khoảng trắng. Ký hiệu ‘$’ được sử dụng trong lệnh `sed` để khớp với ký tự tab và‘ g ’được sử dụng để thay thế tất cả các ký tự tab.

$quăng đi -Và '1NS2NS3 ' | quyến rũ$'s / t / / g'

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy lệnh trên.

Lên đầu trang

36. Thay thế 4 ký tự khoảng trắng liên tiếp bằng ký tự tab

Lệnh sau sẽ thay thế 4 ký tự liên tiếp bằng ký tự tab ( t).

$quăng đi -Và '1 2' | quyến rũ$'s / / t / g'

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy lệnh trên.

Lên đầu trang

37. Cắt ngắn tất cả các dòng còn 80 ký tự đầu tiên

Tạo một tệp văn bản có tên in.txt chứa các dòng hơn 80 ký tự để kiểm tra ví dụ này.

in.txt

PHP là một ngôn ngữ kịch bản phía máy chủ.
PHP là một ngôn ngữ mã nguồn mở và PHP có phân biệt chữ hoa chữ thường. PHP độc lập với nền tảng.
Lệnh `sed` sau sẽ cắt bớt mỗi dòng của in.txt tệp thành 80 ký tự.

$con mèoin.txt
$quyến rũ 's / (^. {1,80 } ). * / 1 /'in.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên. Dòng thứ hai của tệp in.txt chứa hơn 80 ký tự và dòng này bị cắt bớt trong đầu ra.

Lên đầu trang

38. Tìm kiếm một chuỗi regex và thêm một số văn bản tiêu chuẩn vào sau nó

Lệnh `sed` sau sẽ tìm kiếm văn bản,‘ xin chào 'Trong văn bản đầu vào và nối văn bản,' John ‘Sau văn bản đó.

$quăng đi 'xin chào, bạn khỏe không?' | quyến rũ 's / (xin chào ) / 1 John /'

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy lệnh trên.

Lên đầu trang

39. Tìm kiếm chuỗi regex và nối một số văn bản sau khớp thứ hai trong mỗi dòng

Lệnh `sed` sau sẽ tìm kiếm văn bản,‘ PHP ‘Trong mỗi dòng của input.txt và thay thế kết hợp thứ hai trong mỗi dòng bằng văn bản, 'Văn bản Mới được Thêm vào' .

$con mèoinput.txt
$quyến rũ 's / (PHP ) / 1 (Văn bản mới được thêm vào) / 2'input.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên. Văn bản tìm kiếm, ‘ PHP 'Xuất hiện hai lần trong dòng thứ hai và thứ ba của input.txt tập tin. Vì vậy, văn bản, ' Văn bản mới đã được thêm vào 'Được chèn vào dòng thứ hai và thứ ba.

Lên đầu trang

40. Chạy các tập lệnh `sed` nhiều dòng từ một tệp

Nhiều tập lệnh `sed` có thể được lưu trữ trong một tệp và tất cả các tập lệnh có thể được thực thi cùng nhau bằng cách chạy lệnh` sed`. Tạo một tệp có tên ‘Sedcmd ‘Và thêm nội dung sau. Ở đây, hai tập lệnh `sed` được thêm vào tệp. Một tập lệnh sẽ thay thế văn bản, ‘ PHP ' qua ‘ASP ‘Một tập lệnh khác sẽ thay thế văn bản,‘ sống độc lập ‘Bằng văn bản,‘ sự phụ thuộc '.

sedcmd

NS/PHP/ASP/
NS/sống độc lập/sự phụ thuộc/

Lệnh `sed` sau sẽ thay thế tất cả văn bản‘ PHP ’và‘ độc lập ’bằng‘ ASP ’và‘ phụ thuộc ’. Ở đây, tùy chọn ‘-f’ được sử dụng trong lệnh `sed` để thực thi tập lệnh` sed` từ tệp.

$con mèosedcmd
$quyến rũ -NSsedcmd input.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên.

Lên đầu trang

41. Ghép một mẫu nhiều dòng và thay thế bằng văn bản nhiều dòng mới

Lệnh `sed` sau sẽ tìm kiếm văn bản nhiều dòng, 'Linux nAndroid' và nếu mẫu phù hợp thì các dòng phù hợp sẽ được thay thế bằng văn bản nhiều dòng, ‘Ubuntu nAndroid Lollipop ‘. Ở đây, P và D được sử dụng để xử lý đa dòng.

$con mèoos.txt
$quyến rũ '$! N; s / Linux nTránh / Ubuntu nTránh Lollipop /; P; D'os.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên.

Lên đầu trang

42. Thay thế thứ tự của hai từ trong một văn bản khớp với một mẫu

Lệnh `sed` sau sẽ lấy đầu vào của hai từ từ lệnh` echo` và thay thế thứ tự của các từ này.

$quăng đi 'trăn perl' | quyến rũ -Và 's / ([^] * ) * ([^] * ) / 2 1 /'

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy lệnh trên.

Lên đầu trang

43. Thực thi nhiều lệnh `sed` từ dòng lệnh

Tùy chọn ‘-e’ được sử dụng trong lệnh `sed` để chạy nhiều tập lệnh` sed` từ dòng lệnh. Lệnh `sed` sau sẽ lấy một văn bản làm đầu vào từ lệnh` echo` và thay thế cho ‘ Ubuntu ' qua ' Kubuntu ' và ' hàng trăm ' qua ' Fedora '.

$quăng đi 'Ubuntu Centos Debian' | quyến rũ -Và của / Ubuntu / Kubuntu /; s / Centos / Fedora / '

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy lệnh trên. Ở đây, ‘Ubuntu’ và ‘Centos’ được thay thế bằng ‘Kubuntu’ và ‘Fedora’.

Lên đầu trang

44. Kết hợp `sed` với các lệnh khác

Lệnh sau sẽ kết hợp lệnh `sed` với lệnh` cat`. Lệnh `sed` đầu tiên sẽ lấy đầu vào từ os.txt tập tin và gửi kết quả của lệnh tới lệnh thứ hai `sed` sau khi thay thế văn bản '' Linux 'bằng' Fedora '. Lệnh `sed` thứ hai sẽ thay thế văn bản,‘ Windows ’bằng‘ Windows 10 ’.

$con mèoos.txt| quyến rũ 's / Linux / Fedora /'| quyến rũ 's / windows / Windows 10 / i'

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy lệnh trên.

Lên đầu trang

45. Chèn dòng trống trong tệp

Tạo một tệp có tên stdlist với nội dung sau đây.

stdlist

#ID #Name
[101] -Nhưng
[102] -Neha

Tùy chọn ‘G’ được sử dụng để chèn dòng trống trong tệp. Lệnh `sed` sau sẽ chèn các dòng trống sau mỗi dòng của stdlist tập tin.

$con mèostdlist
$quyến rũG stdlist

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên. Một dòng trống được chèn vào sau mỗi dòng của tệp.

Lên đầu trang

46. ​​Thay thế tất cả các ký tự chữ-số bằng khoảng trắng trong mỗi dòng của tệp.

Lệnh sau sẽ thay thế tất cả các ký tự chữ-số bằng khoảng trắng trong stdlist tập tin.

$con mèostdlist
$ nhưng 's / [A-Za-z0-9] // g'stdlist

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy các lệnh trên.

Lên đầu trang

47. Sử dụng ‘&’ để in chuỗi phù hợp

Lệnh sau sẽ tìm kiếm từ bắt đầu bằng ‘L’ và thay thế văn bản bằng cách thêm vào ‘Chuỗi được so khớp là - ‘Với từ phù hợp bằng cách sử dụng ký hiệu‘ & ’. Ở đây, ‘p’ được sử dụng để in văn bản đã sửa đổi.

$quyến rũ -n 's / ^ L / Chuỗi được so khớp là - & / p'os.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy lệnh trên.

Lên đầu trang

48. Chuyển đổi các cặp từ trong một tệp

Tạo một tệp văn bản có tên course.txt với nội dung sau đây có chứa cặp từ ở mỗi dòng.

course.txt

PHP ASP
MySQL Oracle
CodeIgniter Laravel

Lệnh sau sẽ chuyển đổi cặp từ trong mỗi dòng của tệp, course.txt .

$quyến rũ 's / ([^] * ) * ([^] * ) / 2 1 /'course.txt

Đầu ra:

Đầu ra sau đây sẽ xuất hiện sau khi chuyển đổi cặp từ trong mỗi dòng.

Lên đầu trang

49. Viết hoa ký tự đầu tiên của mỗi từ

Lệnh `sed` sau sẽ lấy văn bản đầu vào từ lệnh` echo` và chuyển ký tự đầu tiên của mỗi từ thành chữ hoa.

$quăng đi 'Tôi thích lập trình bash' | quyến rũ 's / ([a-z] ) [[a-zA-Z0-9] * ) / u 1 2 / g'

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy lệnh trên. Văn bản đầu vào, Tôi thích lập trình bash được in như Tôi thích Lập trình Bash sau khi viết hoa từ đầu tiên.

Lên đầu trang

50. In số dòng của tệp

Ký hiệu ‘=’ được sử dụng lệnh `sed` để in số dòng trước mỗi dòng của tệp. Lệnh sau sẽ in nội dung của os.txt tệp có số dòng.

$quyến rũ '='os.txt

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi chạy lệnh trên. Có bốn dòng trong os.txt tập tin. Vì vậy, số dòng được in trước mỗi dòng của tệp.

Lên đầu trang

Phần kết luận:

Các cách sử dụng khác nhau của lệnh `sed` được giải thích trong hướng dẫn này bằng cách sử dụng các ví dụ rất đơn giản. Đầu ra của tất cả các tập lệnh `sed` được đề cập ở đây được tạo tạm thời và nội dung của tệp gốc không thay đổi. Nhưng nếu bạn muốn, bạn có thể sửa đổi tệp gốc bằng cách sử dụng tùy chọn –i hoặc –in-place của lệnh sed. Nếu bạn là người dùng Linux mới và muốn tìm hiểu cách sử dụng cơ bản của lệnh `sed` để thực hiện các loại tác vụ thao tác chuỗi khác nhau, thì hướng dẫn này sẽ giúp bạn. Sau khi đọc xong hướng dẫn này, hy vọng rằng bất kỳ người dùng nào cũng sẽ có được khái niệm rõ ràng về các chức năng của lệnh `sed`.

Các câu hỏi thường gặp

Lệnh sed được sử dụng để làm gì?

Lệnh sed có một số cách sử dụng khác nhau. Điều đó đang được nói, cách sử dụng chính là để thay thế các từ trong một tệp hoặc tìm và thay thế.

Điều tuyệt vời về sed là bạn có thể tìm kiếm một từ trong tệp và thay thế nó, nhưng bạn thậm chí không bao giờ phải mở tệp - sed chỉ làm tất cả cho bạn!

Cũng như điều này, nó có thể được sử dụng để xóa. Tất cả những gì bạn cần làm là nhập từ bạn muốn tìm, thay thế hoặc xóa vào sed, và nó sẽ hiển thị cho bạn - sau đó bạn có thể chọn thay thế từ đó hoặc xóa tất cả dấu vết của từ đó khỏi tệp của mình.

sed là một công cụ tuyệt vời để có thể thay thế những thứ như địa chỉ IP và bất kỳ thứ gì có độ nhạy cao mà bạn không muốn đưa vào tệp. sed là điều cần biết đối với bất kỳ kỹ sư phần mềm nào!

S và G trong lệnh sed là gì?

Theo thuật ngữ đơn giản nhất của nó, hàm S có thể được sử dụng trong sed chỉ đơn giản có nghĩa là 'thay thế'. Sau khi gõ S, bạn có thể thay thế hoặc thay thế bất cứ thứ gì bạn muốn - chỉ cần gõ S sẽ chỉ thay thế lần xuất hiện đầu tiên của từ trên một dòng.

Do đó, nếu bạn có một câu hoặc dòng đề cập đến nó nhiều lần, thì hàm S không phải là lý tưởng vì nó sẽ chỉ thay thế cho lần xuất hiện đầu tiên. Bạn cũng có thể chỉ định một mẫu để làm cho S thay thế các từ sau mỗi hai lần xuất hiện.

Chỉ định G ở cuối lệnh sed sẽ thay thế toàn cục (đó là chữ G viết tắt của nó). Với suy nghĩ này, nếu bạn chỉ định G, nó sẽ thay thế mọi lần xuất hiện của từ bạn đã chọn, thay vì chỉ lần xuất hiện đầu tiên mà S thực hiện.

Làm cách nào để chạy tập lệnh sed?

Bạn có thể chạy tập lệnh sed theo một số cách nhưng phổ biến nhất là trên dòng lệnh. Ở đây bạn có thể chỉ định sed và tệp bạn muốn sử dụng lệnh trên.

Điều này cho phép bạn sử dụng sed trên tệp đó, cho phép bạn tìm, xóa và thay thế nếu cần.

Bạn cũng có thể sử dụng nó trong một tập lệnh shell và bằng cách này, bạn có thể chuyển bất cứ thứ gì bạn muốn vào tập lệnh và nó sẽ chạy lệnh tìm và thay thế cho bạn. Điều này hữu ích cho việc không muốn chỉ định dữ liệu nhạy cảm cao bên trong một tập lệnh, vì vậy, thay vào đó, bạn có thể chuyển nó vào dưới dạng một biến

Hãy nhớ rằng điều này tất nhiên chỉ có sẵn trên Linux và vì vậy bạn sẽ cần đảm bảo rằng bạn có một dòng lệnh Linux để chạy tập lệnh sed của mình.