2006/06/25, 16:44:13

Khử dấu phụ bằng `sed'

Nhiều lúc bạn cần gửi một email nào đó và sợ người nhận không đọc được tiếng Việt có dấu. Sẽ rất mất thời gian nếu bạn phải ngồi... gõ thêm một bản không có dấu.

Trong Windows, bạn có thể sử dụng công cụ chuyển mã của Unikey để làm việc này chỉ với vài tổ hợp phím tắt. Nhưng trong Linux, uvconv lại chưa thấy có tuỳ chọn này. Tuy nhiên, chúng ta có thể dùng `sed' với lệnh sau:

$ sed -e 's/[àảãáạằẳẵắặăầẩẫấậâ]/a/g' \
-e 's/[èẻẽéẹềểễếệê]/e/g' \
-e 's/[ìỉĩíị]/i/g' \
-e 's/[òỏõóọồổỗốộôờởỡớợơ]/o/g' \
-e 's/[ùủũúụừửữứựư]/u/g' \
-e 's/[ỳỷỹýỵ]/y/g' \
-e 's/đ/d/g' \
-e 's/[ÀẢÃÁẠẰẲẴẮẶĂẦẨẪẤẬÂ]/A/g' \
-e 's/[ÈẺẼÉẸỀỂỄẾỆÊ]/E/g' \
-e 's/[ÌỈĨÍỊ]/I/g' \
-e 's/[ÒỎÕÓỌỒỔỖỐỘÔỜỞỠỚỢƠ]/O/g' \
-e 's/[ÙỦŨÚỤỪỬỮỨỰƯ]/U/g' \
-e 's/[ỲỶỸÝỴ]/Y/g' \
-e 's/Đ/D/g' CODAU > KHONGDAU

Giải thích:

Lệnh trên sẽ mở tập tin CODAU (có dấu), chuyển các kí tự có dấu thành không dấu và xuất kết quả ra tập tin KHONGDAU (không dấu).

Tuy nhiên, vẫn thật là bất tiện nếu như lần nào bạn cũng phải gõ chính xác từng đó kí tự. Có một cách đơn giản là viết một đoạn mã shell có lệnh trên. Bạn tạo tập tin khudau.sh với nội dung như sau:

#!/bin/sh
 
sed -e 's/[àảãáạằẳẵắặăầẩẫấậâ]/a/g' \
-e 's/[èẻẽéẹềểễếệê]/e/g' \
-e 's/[ìỉĩíị]/i/g' \
-e 's/[òỏõóọồổỗốộôờởỡớợơ]/o/g' \
-e 's/[ùủũúụừửữứựư]/u/g' \
-e 's/[ỳỷỹýỵ]/y/g' \
-e 's/đ/d/g' \
-e 's/[ÀẢÃÁẠẰẲẴẮẶĂẦẨẪẤẬÂ]/A/g' \
-e 's/[ÈẺẼÉẸỀỂỄẾỆÊ]/E/g' \
-e 's/[ÌỈĨÍỊ]/I/g' \
-e 's/[ÒỎÕÓỌỒỔỖỐỘÔỜỞỠỚỢƠ]/O/g' \
-e 's/[ÙỦŨÚỤỪỬỮỨỰƯ]/U/g' \
-e 's/[ỲỶỸÝỴ]/Y/g' \
-e 's/Đ/D/g' ~/CODAU > ~/KHONGDAU

Bạn chmod +x cho tập tin khudau.sh và chép nó vào thư mục ~/.

Mỗi lần cần khử dấu một văn bản nào đó, bạn chỉ cần mở tập tin ~/CODAU (nếu chưa có tập tin này thì tạo nó trước bằng lệnh touch ~/CODAU), chép đè nội dung cần khử dấu và lưu lại. Sau đó chạy ~/khudau.sh. Và cuối cùng là mở tập tin kết quả ~/KHONGDAU ra...

Đây mới chỉ là một ý tưởng và thực tế thì việc sử dụng cũng hơi mất thời gian. Hi vọng ai đó, nếu biết lập trình, có thể viết một chương trình dễ dùng hơn, tương tự công cụ của Unikey trên Windows ;).

NGÀY NÀY NĂM XƯA

Hội nghị cấp cao của nhân dân Đông Dương họp trong hai ngày 24, 25/4/1970 nhằm động viên nhân dân 3 nước Đông Dương tăng cường đoàn kết nhất trí hết lòng ủng hộ lẫn nhau, kiên trì và đẩy mạnh chiến đấu, đánh bại đế quốc Mĩ và bè lũ, tiến lên giành thắng lợi hoàn toàn. Đoàn đại biểu nước Việt Nam Dân chủ cộng hoà đi dự hội nghị do Thủ tướng Phạm Văn Đồng dẫn đầu. Đoàn đại biểu nhân dân Việt Nam do luật sư Nguyễn Hữu Thọ, Chủ tịch Đoàn chủ tịch Uỷ ban Trung ương mặt trận dân tộc giải phóng miền Nam, Chủ tịch Hội đồng cố vấn Chính phủ cách mạng lâm thời miền Nam Việt Nam dẫn đầu. [Chi tiết...]

GIỚI THIỆU SÁCH

ĐỐ VUI

Bằng trang cái nón, cả bọn được nhờ

RSS

RSS Feed
0.0014650821685791
Powered by statxt

Copyleft: ngonngu.net © 2007