2013-09-11 126 views
6

Tôi có tệp văn bản, tôi chỉ muốn cột đầu tiên và cột cuối cùng. Tuy nhiên vấn đề là họ được ngăn cách bởi cả khoảng trắng và tab ở nơi ngẫu nhiên, làm cho nó khó khăn cho tôi để sử dụng cutTrích xuất cột đầu tiên và cuối cùng từ tệp văn bản

USER02163 name BAD 
USER5415 ab lsi ei GOOD 
USER15356 sl oe ow BAD 

đầu ra mong muốn là:

USER02163 BAD 
USER5415 GOOD 
USER15356 BAD 

Có ai có một cách hacky tôi có thể có được sản lượng mong muốn của tôi?

Trả lời

12

Dễ nhất bằng cách sử dụng awk. Lệnh này là:

awk '{print $1, $NF}' filename 
1

Khi bạn chỉ định dấu phân cách trường làm khoảng trống trong nó sẽ bao gồm một và nhiều dấu cách. Vì vậy, bạn có thể sử dụng như thế này,

awk -F " " '{print $1,$NF}' file 

Tương tự như câu trả lời chưa được trả lời. Thêm vào với dấu phân cách trường mang lại cái nhìn sâu sắc rõ ràng.

1

Sử dụng lệnh sed này

$ sed -r 's/([^ ]*) (.*) (.*$)/\1 \3/' filename 

Đầu ra là:

USER02163 BAD 
    USER5415 GOOD 
    USER15356 BAD