2012-08-26 8 views
14

Tôi đang cố gắng định dạng danh sách các mục nhập trong bash và đang sử dụng lệnh column. Tuy nhiên, tùy chọn -t mặc định sử dụng bất kỳ khoảng trống nào làm dấu phân cách, không làm việc cho dữ liệu tôi có (nó chứa khoảng trống và tab). Tôi không thể tìm ra cách để có được cờ -s để chỉ định một ký tự dòng mới làm dấu tách cột duy nhất.Danh sách định dạng với lệnh cột trong * nix

+2

bạn có thể gửi một số mẫu đầu vào và đầu ra? –

+0

Lưu ý rằng 'cột' có sẵn trên Linux (và trên Mac OS X 10.7.4). Nó không nhất thiết phải có sẵn trên các biến thể khác của Unix; ví dụ, nó không được chuẩn hóa bởi POSIX. –

+3

Nếu bạn muốn 3 cột đầu ra, 'pr -l 1 -t -3' sẽ nhận được rất gần với những gì bạn muốn' cột' để tạo ra. Đối với N cột, thay đổi 3 thành N; để chỉ định chiều rộng, hãy thêm '-w 120' hoặc bất kỳ thứ gì. –

Trả lời

13

Về lý thuyết, để xác định một dòng mới, bạn có thể sử dụng các ký hiệu $'...', mà chỉ là như '...' ngoại trừ việc nó hỗ trợ C-phong cách thoát-chuỗi:

column -t -s $'\n' list-of-entries.txt 

Tuy nhiên, tôi không thực sự hiểu mục đích của việc này. Một newline là delimiter hàng, do đó, một cột-delimiter của $'\n' là tương đương với việc không có bất kỳ cột-delimiter tại tất cả:

column -t -s '' list-of-entries.txt 

có nghĩa là đầu vào sẽ được coi như chỉ có một cột; do đó, nó tương đương với không sử dụng column tại tất cả:

cat list-of-entries.txt 

Nó có vẻ như bạn thực sự không muốn sử dụng -t cờ, bởi vì mục đích của -t cờ là để đảm bảo rằng mỗi dòng đầu vào trở nên một dòng đầu ra, và nó không có vẻ giống như những gì bạn muốn. Tôi đoán bạn muốn điều này:

column list-of-entries.txt 

mà sẽ đối xử với mỗi dòng list-of-entries.txt như một giá trị phải được đặt trong một tế bào của bảng mà column đầu ra.

+0

Giải thích tuyệt vời với sự hiểu biết đầy đủ về vấn đề thực sự mà người hỏi gặp phải! – YaOzI

+0

Bạn đánh nó ngay trên đầu! Cảm ơn lời giải thích tuyệt vời! –

6

này hoạt động đến đầu ra một phiên bản in đẹp của một tab tập tin phân

column -t -s $'\t' list-of-entries.txt