20+ linux command hữu ích dành cho Data Scientist

0
2329

Bài viết này của Lập Trình Không Khó sẽ trình bày các linux command hữu ích dành cho dân data scientist. Đây là tổng hợp của bản thân tác giả trong quá trình học tập và làm việc. Danh sách này không bao gồm các command cơ bản của linux như (cd, pwd, ls, ssh, scp, …). Bằng việc biết và sử dụng các command trong danh sách này, tốc độ xử lý công việc của bạn sẽ nhanh hơn đáng kể đó.

Trong quá trình làm việc, nếu mình biết hoặc tìm ra một command hữu ích nào thì mình sẽ tiếp tục bổ sung vào danh sách này. Và bây giờ chúng ta cùng bắt đầu với danh sách linux command hữu ích giúp chúng ta làm việc hiểu quả hơn nào.

Nếu bạn muốn tìm hiểu kiến thức về các linux command cơ bản cũng như cách viết bash script, có thể bạn nên đọc bài viết này trước:

Danh sách linux command hữu ích

Mình sẽ đi theo chức năng, các linux command hoặc tổ hợp command giúp chúng ta giải quyết một vấn đề cụ thể nào đó trong cộng việc nhé. Các command hoặc tổ hợp command này rất ngắn gọn và có thể không dễ nhớ ^^ (dùng nhiều sẽ nhớ được, hoặc quên thì lại lên đây xem, hehe)

1. Download dữ liệu từ internet

Đây là 2 command giúp bạn download file từ internet về máy bạn và hơn thế nữa. Thay vì việc dùng trình duyệt download về máy tính cá nhân, xong rồi lại phải chuyển từ máy cá nhân lên máy server thì từ máy server, sử dụng 1 trong 2 command này sẽ giúp bạn tải trực tiếp nó về nơi bạn cần.

- Bài viết liên quan dành cho bạn -

Bạn chỉ việc truyền đường dẫn của tệp tin cần download là được, ví dụ với wget:

Còn với command curl thì nó cũng sẽ download nhưng không save file mà hiển thị nội dung download được lên màn hình nếu bạn không chỉ định tham số --output cho nó:

Tất nhiên, ứng dụng của 2 command này không chỉ dừng lại ở đây, bạn có thể tìm hiểu thêm nhé. Có đôi chút sự khác nhau giữa 2 command này, bạn xem sự khác nhau được trình bày rất chi tiết tại curl vs wget.

2. Xem nội dung tập tin

Bộ 3 command giúp bạn nhanh chóng xem được 1 phần hoặc toàn bộ nội dung của các tệp tin văn bản theo nhưng góc view khác nhau.

Lệnh head sẽ cho bạn xem 1 phần văn bản ở đầu tệp tin, và ngược lại bạn có thể xem một phần nội dung ở cuối tệp tin với lệnh tail. Còn với cat command thì nó sẽ hiển thị toàn bộ nội dung văn bản.

Việc xem nội dung văn bản mà không muốn chỉnh sửa thì dùng 1 trong 3 command này sẽ giúp bạn xem nhanh nhất, nhanh hơn là dùng vim editor.

Với headtail, bạn có thể chỉ định số dòng muốn xem với tham số -n. Còn khi dùng cat mà bạn muốn xem từ từ trong trường hợp file cần xem có quá nhiều dòng thì hãy thêm | less vào phía sau lệnh cat nhé (Dùng  để thoát khỏi lệnh và dùng mũi tên hoặc cuộn chuột để xem thêm).

3. Đếm số từ, số dòng trong file

Lệnh wc sẽ giúp bạn đếm được lần lượt số từ, số dòng và số byte dữ liệu từ một file văn bản. Khi bạn gọi lệnh này mà không có tham số nào, thì 1 dòng kết quả sẽ hiện lên với các giá trị lần lượt trình tự đã nói. Hoặc nếu bạn chỉ muốn đếm 1 tham số cụ thể thị hãy thêm tham số.

4. Sắp xếp và xóa trùng lặp

Đúng như cái tên, sort (sắp xếp) command giúp bạn sắp xếp dữ liệu theo thứ tự bảng chữ cái. Nó có rất nhiều tùy chọn nhưng tùy chọn mà mình hay dùng nhất đó là sort và xóa trùng lặp nội dung.

Tham số -u có nghĩa là xóa các dòng trùng lặp (chỉ giữ lại 1 dòng duy nhất trong trường hợp có nhiều dòng giống nhau). Bạn cũng có thể sắp xếp ngược lại (giảm dần theo bảng chữ cái) bằng cách dùng tham số -r.

Nếu bạn muốn sắp xếp mà không phân biệt hoa thường, thêm tham số -f nhé. Có gì cứ gõ sort --help là có hết à.

Việc xóa trùng lặp nội dung có rất nhiều command khác nhau làm được. Đây là một command khác có thể xóa trùng lặp khá nhanh mà không cần sort:

Hoặc:

5. Đếm tần suất xuất hiện

Giả sử nếu bạn có một file text với một đống các từ như thế này:

Và bạn muốn đếm số lần xuất hiện của mỗi dòng trong file này, hãy dùng tổ hợp command sau đây với file dữ liệu, giả sử là data.txt:

Hoặc in đẹp hơn thì sửa lại xíu, như này:

6. Kiểm tra, xóa dòng theo điều kiện

Bạn đang làm việc với tệp tin văn bản và muốn kiểm tra xem nội dung văn bản có chữ “yêu” hay không chẳng hạn. Thì bạn sẽ có thể kiểm tra rất nhanh mà không cần phải mở text editor lên:

Ở trên mình chèn code nên bạn không nhìn thấy highlight, thực tế thì chữ yêu sẽ được bôi đậm và tô màu đỏ. Bằng cách này, bạn nhanh chóng kiểm tra được theo điều kiện bạn muốn.

Bạn có thể tìm kiếm bằng regex nhé, ví dụ:

Hoặc không phân biệt hoa thường, tìm kiếm các dòng bắt đầu với chữ anh,

Nếu bạn muốn lấy các dòng này thì output nó ra file thôi:

Còn nếu bạn muốn xóa các dòng theo điều kiện thì sao?

  • Dùng invert match của command grep phía trên, ví dụ xóa các dòng bắt đầu bằng chữ yêu:

  • Hoặc dùng sed command như sau:

7. Xóa dòng dài hơn, ngắn hơn x ký tự

Vẫn là command sed mà chúng ta đã nhắc tới ở trên thôi. Trải nghiệm với 1 dòng command ngắn gọn thay vì phải ngồi viết một đoạn code dài dòng nào.

  • Xóa các dòng trong file văn bản có chiều dài nhỏ hơn hoặc bằng x, giả sử x = 10:

Nếu bạn nào rành regex thì sẽ hiểu hơn command trên. Hoặc có một command khác dùng awk cũng với chức năng tương tự:

  • Xóa các dòng trong file văn bản có độ dài lớn hơn x, giả sử x = 10:

Hoặc:

8. Kiểm tra encoding, chuyển về UTF-8

Trong quá trình làm việc với file văn bản, đôi khi vì một lý do nào đó chúng ta sẽ gặp vấn đề lỗi encoding, đặc biệt do mình hay làm việc với dữ liệu tiếng Việt nên thường phải xử lý vấn đề này.

Để kiểm tra encoding của một file văn bản, hãy dùng command sau:

Nếu đó là UTF-8 thì không có vấn đề gì rồi. Nhưng nếu kết quả là 1 loại encoding khác, bạn vẫn có thể chuyển lại về UTF-8 theo cách sau đây (giả sử cần chuyển từ UTF16 về UTF8)

Xem các encoding mà iconv hỗ trợ bằng cách dùng command:

9. Xóa các dòng dữ liệu của file A có trong file B

Cách đầu tiên, yêu cầu hai tập tin file A và file B đã được sắp xếp. Nếu chưa sắp xếp thì dùng command sort đã trình bày ở mục 4.

Sau đó, để xóa các dòng dữ liệu của file A xuất hiện trong file B, bạn dùng command sau:

Khi đó file output sẽ là các dòng dữ liệu của file A nhưng không xuất hiện trong file B. Tham số -23 lấy các dòng xuất hiện trong cả 2 file, hoặc chỉ xuất hiện trong file B.

Trong trường hợp bạn muốn giữ nguyên trật tự sắp xếp ban đầu của file mà vẫn muốn đạt được mục đích tương tự, thì dùng command sau:

10. Trộn ngẫu nhiên (Shuffle) các dòng

Giả sử bạn đang huấn luyện mô hình phân loại hay gì đó, và bạn muốn chia train/test nhưng lại muốn dữ liệu của bạn có phân phối ngẫu nhiên. Khi đó, bạn có thể trộn ngẫu nhiên vị trí các dòng trong file.

Trong trường hợp bạn có nhiều hơn 1 file, bạn vừa muốn gộp thành 1 file và đồng thời xáo trộn dữ liệu, thì hãy dùng:

Hoặc sử dụng sort command như sau:

11. Split file thành nhiều file nhỏ hơn

Đôi khi bạn phải làm việc với file hàng chục GB, mà bạn lại muốn xử lý từng dòng file dữ liệu này. Vậy để có thể chạy đa luồng thì bạn cần chia nhỏ thành nhiều file. Trong linux có một command có thể giúp bạn làm việc này nhanh chóng:

Tổng kết

Trên đây là một số linux command hữu ích mà tổng hợp lại từ kinh nghiệm trong quá trình học tập và làm việc của mình. Các chia sẻ trong bài viết này tổng hợp từ các kết quả mình tra cứu trên Google. Nếu bạn có command nào hay thì đừng ngại chia sẻ với mọi người nhé.

Cảm ơn các bạn đã đọc hết bài viết!

Subscribe
Notify of
guest
0 Bình luận
Inline Feedbacks
View all comments