2012-05-17 34 views
7

Tôi có một số dữ liệu đang được trả về bởi một số truy vấn SQL giống như dưới đây. Tôi đang cố gắng phân tách các dòng dựa trên dấu tách và gửi nó đến dòng mới. Làm cách nào tôi có thể làm điều này trong UNIX .. tôi cố gắng sử dụng vỏ kịch bản nhưng không thể thực hiện thông qua ...Tách dòng dựa trên dấu phân cách trong UNIX

ALB|1001|2012-04-15 ALB|1001|2012-04-14 ALB|1001|2012-04-16 ALB|1001|2012-04-17 


ALB|1001|2012-04-15 
ALB|1001|2012-04-14 
ALB|1001|2012-04-16 
ALB|1001|2012-04-17 
+0

Bạn có muốn mở một giải pháp không viết mã không? Điều này sẽ khá tầm thường trong Python, vd: 'for i in s.split(): in i' nếu' s' chứa chuỗi của bạn – Levon

+0

Có khoảng trống đó là một phần của đầu ra ... Tôi đang cố gắng tập luyện trên UNIX .. – Teja

+0

tốt hơn để khắc phục đầu ra dòng-seperator của bạn trên công cụ SQL mà bạn đang sử dụng. Chúc may mắn. – shellter

Trả lời

18

cho rằng ví dụ cụ thể, tr ' ' '\n' < file nên làm việc:

echo "ALB|1001|2012-04-15 ALB|1001|2012-04-14 ALB|1001|2012-04-16 ALB|1001|2012-04-17" | tr ' ' '\n' 
+0

bạn có thể đăng hoàn toàn ... – Teja

+1

+1 cho giải pháp đơn giản đẹp – Levon

+0

Yêu thích nó twalberg .. Rất đơn giản và dễ dàng .. Cảm ơn .. :) – Teja

8

xargs là một đơn giản đơn chương trình bạn có thể sử dụng để thực hiện việc này, như trong:

$ echo "ALB|1001|2012-04-15 ALB|1001|2012-04-14 ALB|1001|2012-04-16 ALB|1001|2012-04-17"|xargs -d' ' -n1 
ALB|1001|2012-04-15 
ALB|1001|2012-04-14 
ALB|1001|2012-04-16 
ALB|1001|2012-04-17 
+0

+1 đã được sử dụng 'xarg's trong nhiều năm, không bao giờ nhìn vào các tùy chọn dòng lệnh trước, rõ ràng là một sai lầm. – Levon

+2

'-d' không phải là một lựa chọn cho' xargs' trên OS X. Chỉ cần nghĩ rằng tôi muốn thêm rằng ... – 2rs2ts

+0

'xargs' có một nhược điểm (ẩn) - nó sử dụng'/bin/echo' khi không có chương trình để chạy đã được chỉ định và do đó nó được chạy theo cách quá thường xuyên - trên mọi yếu tố đầu vào với các hình phạt hiệu suất đáng chú ý – poige

Các vấn đề liên quan