2013-03-12 24 views
17

Tôi cần xóa cột khỏi một tệp văn bản thuần túy. Tôi nghĩ rằng điều này có thể được thực hiện bằng cách sử dụng nghịch đảo của lệnh cắt. Ý tôi là, một cái gì đó như thế này:Làm thế nào để sử dụng lệnh cắt trong bash để hiển thị tất cả các cột ngoại trừ các cột được chỉ định?

Nếu đây là tập tin của tôi:

01 Procedimiento_tal retiro aceptado 
01 tx1 
01 tx2 
01 tx3 
02 Procedimiento_tal retiro rechazado 
02 tx1 
02 tx2 
02 tx3 
03 Procedimiento_tal retiro aceptado 
03 tx1 
03 tx2 
03 tx3 

Những gì tôi có thể làm để loại bỏ các cột đầu tiên với cắt và nhận được các văn bản sau đây trong bash ?:

Procedimiento_tal retiro aceptado 
tx1 
tx2 
tx3 
Procedimiento_tal retiro rechazado 
tx1 
tx2 
tx3 
Procedimiento_tal retiro aceptado 
tx1 
tx2 
tx3 

Cảm ơn trước

Trả lời

35

Sử dụng cut:

cut -d ' ' -f 2- input-file 

nên làm những gì bạn muốn.

+0

Cảm ơn, nó hoạt động :) – Herman

+1

không thể nâng cấp đủ điều này ... – hovanessyan

15

Để đọc infile sử dụng ' ' như một dấu phân cách (-d) và đưa mỏ (-f) 2 trở đi (2-) vào file:

cut -d' ' -f2- infile > file 

Xem man cut cho các tùy chọn hơn.

N.B: Đây không phải là -specific.

+0

Đặc biệt do lời giải thích của bạn. –

+1

Giải thích rất hữu ích! – ayaz

4

Cắt lõi hạt nhân GNU hỗ trợ cờ --complement. Vì vậy, nếu bạn đang sử dụng phiên bản cắt bạn có thể nói:

cut --complement -d' ' -f1 infile 

Output:

Procedimiento_tal retiro aceptado 
tx1 
tx2 
tx3 
Procedimiento_tal retiro rechazado 
tx1 
tx2 
tx3 
Procedimiento_tal retiro aceptado 
tx1 
tx2 
tx3 
+0

Woow cảm ơn Thor, tôi sẽ thay đổi kịch bản của mình thành cái này. Tôi thực sự đánh giá cao sự giúp đỡ của bạn. – Herman

1

Đây là một lệnh mà làm việc, và đó là ngắn hơn so với tất cả mọi người của một chút:

cut -b 4- input-file 

-b là viết tắt của byte và chọn các byte sẽ được dán vào màn hình.

4- là một phần của -b và nó có nghĩa là nó sẽ chọn ký tự thứ 4 của mỗi hàng với ký tự cuối cùng của mỗi hàng. lệnh cắt sau đó sẽ dán vùng chọn vào màn hình.

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