Stream Editor

Chiều nay có người hỏi dùng sed để thay thế tất cả các patterns trong một file, quên mất tiêu, nghĩ ra đủ thứ regular expression quái chiêu mà chẳng làm được gì, coi lại giải pháp chỉ là 1 chữ ‘g’!

sed -i ‘s/pattern/new/g’ tenfile

Nhân tiện đây đưa thêm vài thông tin về SED đã viết ở blog 360 (đúng là blog Yahoo củ chuối nhất trên đời, để tìm mỗi cái bài này mà tốn cả nửa tiếng đồng hồ!)

Để soạn thảo văn bản, ta có rất nhiều lựa chọn: vi/vim, gedit, nano, OpenOfficeOrgWriter, … Đó là những visual editor, nghĩa là người sử dụng tương tác với file, các thao tác đọc, tìm kiếm, chỉnh sửa … đều được thực hiện một cách trực quan. Vậy trong những trường hợp không thể “trực quan”, “tương tác” được thì làm thế nào? Ví dụ:

  • Thao tác trên file khi hệ thống đang khởi động
  • Chỉnh sửa output của một chương trình on-the-fly, tức lúc chương trình đang chạy
  • Tự động hoá các thao tác trên file
  • Thao tác trên các file với kích thước, nội dung không biết trước

Đó chính là chỗ các công cụ stream editor hay là one-liner text editor như SED (Stream EDitor) phát huy tác dụng một cách tuyệt vời. Một ví dụ thực tế của việc sử dụng sed là trong các script khi khởi động một đĩa liveCD, chẳng hạn Ubuntu LiveCD. Sed dùng để chỉnh sửa các file cấu hình được sinh ra on-the-fly trong quá trình hệ thống boot lên.

Sed không phải là công cụ dành cho newbie. Để sử dụng thành thạo sed và phát huy hết sức mạnh của nó không phải dễ, đòi hỏi sự kiên trì và nhiều kỹ năng về Regular Expression, nắm vững ngôn ngữ hình thức này xem như bạn đã nắm 90% sức mạnh của Sed. Ngoài ra còn phải nắm vững những cách nối tiếp, xâu chuỗi lệnh trong Linux.

Để hiểu rõ hơn về công cụ xử lí văn bản cực mạnh này của Linux, hãy tham khảo FAQ, để tiếp cận Sed một cách đỡ khó khăn, hãy nghiên cứu hướng dẫn này. Ngoài ra còn vô số tài liệu trên Internet nói về Sed.

Một vài ví dụ đơn giản tôi hay gặp khi sử dụng sed:

* Đọc một file:

sed ‘$r’ tenfile

* Xoá trắng nội dung một file:

sed -i ‘/^/d’ tenfile

* Thêm một dòng vào cuối file:

sed -i ‘$a dongtext’ tenfile

* Thêm dấu comment (#) vào phía trước các dòng bắt đầu bằng số một (1)

sed -i ‘s/\(^[1]\)/#\1/’ tenfile

Đông Thao

About dongthao

The best things in life, they are free ... (Cry on my shoulder lyric)
This entry was posted in Linux, Linux Tutorial. Bookmark the permalink.

Có 5 phản hồi tại Stream Editor

  1. moriator nói:

    Em nghe nói emacs cũng là 1 editor được rất nhiều người sử dụng. Anh có ý kiến gì về emacs không?

  2. dongthao nói:

    Emacs là một editor rất mạnh, có thể dùng làm IDE cho hầu hết các ngôn ngữ lập trình phổ biến. Anh cũng không có ý kiến gì nhiều vì không sử dụng thường xuyên, anh chủ yếu dùng vim. Chỉ là vấn đề khẩu vị thôi🙂.

  3. kiennguyen nói:

    See a war bettween VI supporters and Emacs supporters ->

  4. htr3n nói:

    Khẩu quyết và kiếm chiêu đều đã có đầy đủ từ A-Z. Chỉ còn lại người dụng kiếm thế nào thui à. Bản thân mình thì với nhu cầu cá nhân đơn giản vẫn trung thành với vi: gọn nhẹ (nên có mặt ở hầu hết OS như Sun/Solaris, AIX, HP-UX, OS X, từ hệ thống mạnh ầm ấm C2D/C4D/AMD64 đến yếu xìu như P3) và đủ mạnh để soạn thảo, tìm kiếm, thay thế …

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s