2012-09-17 13 views
8

Tôi làm một đường ống dài, kết thúc bằng ...| awk '{print $5"\t\t" $3"\t"$4}' trong thiết bị đầu cuối Linux. Các cột được đệm bằng các tab. Các mục nhập cột đầu tiên có số lượng ký tự khác nhau, do đó kết quả cột thứ hai không hoàn toàn theo chiều dọc. Làm thế nào để làm cho bàn trông hoàn hảo?awk để đầu ra bảng giống như hoặc excel giống như cột trong thiết bị đầu cuối linux?

enter image description here

+0

Hãy thử cờ liên kết cột của awk ... thử tìm tại đây: http: // sta ckoverflow.com/questions/6345429/how-do-i-print-some-text-in-bash-and-pad-it-with-spaces-to-a-certain-width –

Trả lời

23

cố gắng để ống kết quả để cột -t:

...| awk '{print $5"\t\t" $3"\t"$4}'|column -t 

hy vọng nó sẽ giúp

+0

| column -t help =) Cảm ơn bạn! – Ivan

+1

+1 Bạn cũng có thể sử dụng lệnh 'tabs', ví dụ: thử thiết lập kích thước tab lớn:' tabs 25'. Sau đó chạy ống của bạn. Nếu nó đủ lớn bạn sẽ nhận được kết quả mong muốn. Tuy nhiên, tôi thích sử dụng 'column -t' – Steve

+0

Nếu bạn đang đường ống vào' cột', bạn không còn cần tab đôi nữa sau trường đầu tiên (tôi giả định rằng nó phải chứa giá trị rộng trong trường đó). – chepner

6

nếu lĩnh vực của bạn là tab tách ra kịch bản một dòng sau đây có thể in một bảng với tế bào border

sed -e 's/\t/_|/g' table.txt | column -t -s '_' | awk '1;!(NR%1){print "-----------------------------------------------------------------------";}' 

Description   |value     |Comment 
----------------------------------------------------------------------- 
Internal    |322     | 
----------------------------------------------------------------------- 
External    |42515     | 
-----------------------------------------------------------------------