Wednesday, 12 June 2013

Xử lý text trên Linux

công việc này nghe có vẻ nhàm chán
và thực sự thì nó đúng là như vậy, ít nhất đối với tớ. Mỗi lần đọc 1 quyển sách lập trình, cứ đến đoạn xử  lý string là mình cố tua thật nhanh cho hết :v

Nhưng nó cần thiết, quan trọng, và thậm chí mang tính sống còn. Nếu bạn xử lý tất cả mọi thứ bằng tay thì không bàn tới, nhưng nếu bạn muốn tự động hóa mọi thứ, bạn sẽ phải viết script, và xử lý text lại trở nên quan trọng.
Vì: trên UNIX-like OS, output của các utils đều là text cả. Các chương trình giao tiếp với nhau thông qua text (dùng pipeline của sh/bash...), bởi vậy, chán cũng phải làm, thậm chí là làm giỏi :3

Dưới đây là một problem đơn giản, bạn nào ngứa tay thì làm thử, dùng cái gì cũng được, miễn thu được kết quả:
cho 1 đoạn text như trong link pastebin này:

http://paste.ubuntu.com/5758497/

hãy tạo các thư mục ứng với tên các thư mục bên trái, nếu thư mục lồng nhau như : "salt/api" thì tạo thành "salt.api", trong mỗi thư mục chứa các file lấy từ link git bên tay phải.

Thế thôi
hết
:3

6 comments:

  1. In ruby: http://paste.ubuntu.com/5776710/
    dir + repo ở /home/username/
    test với 1 str thôi

    ReplyDelete
    Replies
    1. http://paste.ubuntu.com/5776714/ link này cho đúng với output đã bị comment

      Delete
    2. ngon nhể, ngắn hơn python bao nhiêu :v

      Delete
    3. puts system "git clone "+repo.to_s là gọi lệnh system rồi à, ngắn thế :x
      chỗ này có handle exception không? nếu có lỗi xảy ra thế nào, câu lệnh trả về cái gì hay print ra ????

      Delete
  2. puts system "git clone "+repo.to_s

    cái repo lấy từ regex ra nên thuộc kiểu (thuộc class) Mathdata. Dùng to_s để convert sang string.
    puts system là in kết quả của lệnh git ra màn hình.
    Hoặc đơn giản hơn thì dùng
    `git clone #{repo.to_s}`

    không bắt exception, nếu tạo lỗi thì dừng, git cũng ko chạy nữa.

    ReplyDelete
    Replies
    1. regex mà thuộc class Mathdata thì cũng hay phết nhỉ :x

      Delete