Đôi khi, khi làm việc trên dòng lệnh trong Linux, bạn có thể muốn hiển thị nội dung của tệp theo định dạng cột. Bạn sẽ vui mừng khi biết rằng có một tiện ích dòng lệnh trong Linux cho phép bạn thực hiện việc này. Tên của công cụ là column và chúng ta sẽ thảo luận về những điều cơ bản của lệnh này bằng một số ví dụ dễ hiểu.
Nhưng trước khi thực hiện, cần lưu ý rằng tất cả các ví dụ ở đây đều đã được thử nghiệm trên máy Ubuntu 18.04 LTS.
Và đây là cách trang hướng dẫn của công cụ định nghĩa nó:
Sau đây là một số ví dụ theo kiểu Hỏi & Đáp sẽ giúp bạn hiểu rõ hơn về cách lệnh cột hoạt động.
Bây giờ, để phân cột nội dung của tệp này, hãy sử dụng lệnh column theo cách sau:
Và bạn sẽ nhận được đầu ra như thế này:
Bây giờ, hãy chạy lệnh cột theo cách sau:
Và đây là đầu ra được tạo ra:
Để bạn biết, đây là cách trang hướng dẫn lệnh cột giải thích các tùy chọn dòng lệnh -t và -s:
Theo mặc định, lệnh cột sẽ hợp nhất nhiều dấu phân cách liền kề thành một dấu phân cách duy nhất. Tuy nhiên, nếu muốn, bạn có thể sử dụng tùy chọn dòng lệnh -n để tắt hành vi đó. Vì vậy, trong trường hợp đó, lệnh cột sẽ trở thành:
Ví dụ, dòng nội dung tệp này:
Sẽ hiển thị như sau:
sử dụng lệnh sau:
Nhưng trước khi thực hiện, cần lưu ý rằng tất cả các ví dụ ở đây đều đã được thử nghiệm trên máy Ubuntu 18.04 LTS.
Lệnh cột trong Linux
Lệnh cột trong Linux cho phép bạn tạo danh sách theo cột. Sau đây là cú pháp của nó:
Mã:
column [-entx] [-c columns] [-s sep] [file ...]
Mã:
Tiện ích cột định dạng đầu vào của nó thành nhiều cột. Các hàng được điền trước các cột. Đầu vào được lấy từ các toán hạng tệp hoặc theo mặc định là từ đầu vào chuẩn.
Câu hỏi 1. Làm thế nào để sử dụng lệnh cột?
Cách sử dụng cơ bản khá dễ. Giả sử bạn có tệp có tên 'test.txt' chứa thông tin sau:
Mã:
1
2
3
4
5
6
7
8
9
10
Mã:
column test.txt
Mã:
1 2 3 4 5 6 7 8 9 10
Câu 2. Làm thế nào để phân cột một đầu ra được phân định?
Giả sử một tệp chứa các nội dung sau:
Mã:
Không.|Quốc gia|Có/Không
01|Ấn Độ|Y
02|Hoa Kỳ|Y
03|Úc|Y
04|Trung Quốc|N
05|Nga|Y
06|Nhật Bản|Y
07|Singapore|Y
08|Hàn Quốc|N
09|Phần Lan|Y
10|Ireland|Y
Mã:
column test.txt -t -s "|"
Mã:
Không. Quốc gia Có/Không
01 Ấn Độ Y
02 Hoa Kỳ Y
03 Úc Y
04 Trung Quốc N
05 Nga Y
06 Nhật Bản Y
07 Singapore Y
08 Hàn Quốc N
09 Finaland Y
10 Ireland Y
Mã:
-s Chỉ định một tập hợp các ký tự được sử dụng để phân định các cột cho tùy chọn
-t.
-t Xác định số cột mà đầu vào chứa và tạo một
bảng. Theo mặc định, các cột được phân định bằng khoảng trắng hoặc
bằng các ký tự được cung cấp bằng tùy chọn -s. Hữu ích cho
màn hình in đẹp.
Q3. Còn những trường hợp có nhiều dấu phân cách thì sao?
Trong ví dụ trước, bạn đã thấy nội dung gốc chứa dấu gạch ngang '|' làm dấu phân cách. Vì vậy, lệnh cột đã sử dụng dấu phân cách này để tạo đầu ra định dạng cột. Nhưng nếu có hai dấu gạch ngang trong một số mục thì sao. Ví dụ, hãy xem dòng đầu tiên ở đây:
Mã:
Không.||Quốc gia||Có/Không
01|Ấn Độ|Y
02|Hoa Kỳ|Y
03|Úc|Y
04|Trung Quốc|N
05|Nga|Y
06|Nhật Bản|Y
07|Singpaore|Y
08|Hàn Quốc|N
09|Phần Lan|Y
10|Ireland|Y
Mã:
column -n test.txt -t -s "|"
Câu hỏi 4. Lệnh cột xử lý các dòng trống như thế nào?
Theo mặc định, lệnh cột sẽ bỏ qua các dòng trống. Tuy nhiên, nếu muốn, bạn có thể ngăn chặn hành vi này bằng cách sử dụng tùy chọn dòng lệnh -e.Ví dụ, dòng nội dung tệp này:
Mã:
Không.|Quốc gia|Có/Không
01|Ấn Độ|Y
02|Hoa Kỳ|Y
03|Úc|Y
04|Trung Quốc|N
05|Nga|Y
06|Nhật Bản|Y
07|Singapore|Y
08|Hàn Quốc|N
09|Phần Lan|Y
10|Ireland|Y
Mã:
Không. Quốc gia Có/Không
01 Ấn Độ Y
02 Hoa Kỳ Y
03 Úc Y
04 Trung Quốc N
05 Nga Y
06 Nhật Bản Y
07 Singapore Y
08 Hàn Quốc N
09 Phần Lan Y
10 Ireland Y
Mã:
column -e test.txt -t -s "|"