Sed Thay thế dòng mới bằng không gian

Sed Thay The Dong Moi Bang Khong Gian



Trong UNIX / Linux, lệnh sed là một công cụ chuyên dụng để chỉnh sửa luồng. Nó có thể thực hiện các hoạt động khác nhau trên một dòng văn bản, chẳng hạn như tìm kiếm, tìm và thay thế, và chèn / xóa. Tuy nhiên, đối với hầu hết các phần, sed được sử dụng để tìm và thay thế nội dung văn bản.

Trong hướng dẫn này, chúng tôi sẽ giới thiệu việc thay thế các dòng mới bằng khoảng trắng bằng cách sử dụng sed.

Sử dụng sed để thay thế văn bản

Trước tiên, hãy nhanh chóng xem xét việc thực hiện tìm và thay thế cơ bản bằng cách sử dụng sed. Phương pháp tương tự sẽ được sử dụng khi thay thế dòng mới bằng dấu cách với một số tùy chọn bổ sung. Cấu trúc lệnh như sau:







$ sed -e 's ///'

Hãy xem lệnh sau:



$ echo 'con cáo nâu nhanh nhẹn' | sed -e 's / nhanh / nhanh / g'



Lệnh echo in chuỗi thành GIỚI THIỆU . Luồng STDOUT sau đó là đường ống để quyến rũ. Chúng tôi đã hướng dẫn sed thay thế bất kỳ trường hợp nhanh nào được thay thế bằng nhanh. Cuối cùng, kết quả được in ra màn hình.





Thay thế các dòng mới bằng không gian

Để minh họa, tôi đã tạo tệp văn bản test.txt sau với một số nội dung giả:

$ cat test.txt



Lệnh sed chấp nhận các biểu thức chính quy để mô tả các mẫu khác nhau. Tận dụng tính năng này, chúng tôi sẽ mô tả dòng mới là \ n. Hãy thử thay thế các dòng mới bằng khoảng trắng:

$ sed -e 's / \ n / / g' test.txt

Tuy nhiên, điều đó không hoạt động như mong đợi. Để đạt được mục tiêu này, chúng tôi cần một số tùy chọn bổ sung. Hãy xem lệnh sau:

$ sed -e ': a; N; $! ba; s / \ n / / g' test.txt

Lệnh sed có nhiều phần; mỗi biểu thị một nhiệm vụ cụ thể:

  • : a: Tạo nhãn 'a'
  • N: Thêm dòng tiếp theo vào không gian mẫu
  • $! ba: Nếu không phải là dòng cuối cùng, trả về nhãn ‘a’
  • s / \ n / / g: Tìm và thay thế dòng mới (\ n) bằng dấu cách (/ /). Mẫu được đối sánh trên toàn cầu (/ g)

Lệnh sed lặp lại các bước cho đến khi đến dòng cuối cùng, thay thế tất cả \ n ký tự bằng dấu cách.

Thay vì lệnh phức tạp này, chúng ta có thể đơn giản hóa mọi thứ bằng cách sử dụng cờ -z chỉ định sed hoạt động với các bản ghi được phân tách bằng null. Lệnh sẽ giống như sau:

$ sed -z -e 's / \ n / / g' test.txt

Các phương thức thay thế

Mặc dù sed có thể thực hiện nhiệm vụ tốt, nhưng có một số công cụ thay thế. Trong phần này, chúng tôi sẽ xem xét ngắn gọn một vài trong số chúng.

Đối với ví dụ sau, chúng ta có thể sử dụng lệnh tr để thay thế dòng mới bằng khoảng trắng theo cách đơn giản:

$ tr '\ n' ''

Chúng tôi cũng có thể sử dụng perl để thực hiện công việc. Cú pháp sau cũng tương tự như những gì chúng tôi đã sử dụng với sed (nhưng được đơn giản hóa):

$ perl -p -e 's / \ n / /' test.txt

Một cách khác để thay thế các dòng mới bằng khoảng trắng là sử dụng lệnh dán. Lưu ý rằng nó chỉ có thể xóa một ký tự:

$ paste -s -d '' test.txt

Tương tự như sed, Linux đi kèm với một công cụ khác là awk. Tương tự như sed, nó cũng có thể thực hiện một số thay thế nâng cao trên đầu vào. Đối với mục đích của chúng tôi, hãy sử dụng lệnh awk sau:

$ awk 1 ORS = '' test.txt

Sự kết luận

Hướng dẫn này khám phá cách chúng ta có thể thay thế dòng mới bằng khoảng trắng bằng cách sử dụng sed. Nó đã đạt được theo hai cách khác nhau. Hướng dẫn này cũng bao gồm các công cụ có liên quan khác mà chúng tôi có thể sử dụng để thay thế dòng mới bằng khoảng trắng.

Thay vì sử dụng các lệnh phức tạp khó ghi nhớ, chúng tôi sử dụng Bash scripting để thực hiện nhiều thứ trong Linux. Mặc dù nó phải trả giá bằng một số hiệu suất, nhưng tính linh hoạt và khả năng sử dụng rất đáng giá. Học nhiều hơn về Bash scripting cho người mới bắt đầu .