2015-05-29 18 views
9

Tôi có một Tệp được phân cách bằng dấu phẩy lớn (6GB) và muốn thêm cột chỉ mục vào đó. Tôi đang xem xét các giải pháp loại Unix cho hiệu quả. Tôi đang sử dụng máy Mac.Thêm cột chỉ mục vào tệp CSV

Tôi có điều này:

V1 V2 V3 
0.4625 0.9179 0.8384 
0.9324 0.2486 0.1114 
0.6691 0.7813 0.6705 
0.1935 0.3303 0.4336 

có muốn có được điều này:

ID V1 V2 V3 
1 0.4625 0.9179 0.8384 
2 0.9324 0.2486 0.1114 
3 0.6691 0.7813 0.6705 
4 0.1935 0.3303 0.4336 
+1

Định dạng có chiều rộng cố định hoặc tab được phân tách? –

+0

Một số thông tin nền tảng sẽ hữu ích ở đây. Câu trả lời cho đến nay đã giả định một nền tảng giống Unix. Nhưng có lẽ OP là trên Windows. Bạn có một công cụ cụ thể trong tâm trí? – LondonRob

+0

@ Tom Fenech - Đó là dấu phẩy cách nhau – SharkSandwich

Trả lời

11

này có thể sẽ làm việc:

awk -F'\t' -v OFS='\t' ' 
    NR == 1 {print "ID", $0; next} 
    {print (NR-1), $0} 
' input.csv > output.csv 

Trong awk, biến NR là "tổng số số lượng hồ sơ đầu vào cho đến nay ", mà nói chung có nghĩa là" các curren t số dòng ". Vì vậy, các NR == 1 trong dòng đầu tiên là làm thế nào chúng ta phù hợp với hồ sơ đầu tiên và thêm tiêu đề cột "ID", và cho các dòng còn lại chúng tôi sử dụng NR-1 làm chỉ mục.

Đối số -F'\t' đặt dấu phân tách trường nhập và -vOFS='\t' đặt dấu tách trường trường.

+0

Có vẻ tốt, mặc dù cá nhân tôi sẽ xóa '-F' làm mặc định sẽ làm. –

+0

Cảm ơn đã làm việc hoàn hảo – Xinus

4

Tôi cho rằng bạn có tệp phân cách bằng dấu phẩy.

Sử dụng vim, mở tệp. Ở chế độ thông thường, nhập

:%s/^/\=line('.').','/ 

:%s/^/\=line('.')/ thêm số dòng ở đầu dòng. Vì bạn có tệp phân cách bằng dấu phẩy (thêm cột), bạn cần dấu phẩy sau số dòng của mình. nên .','

thấy this answer cho lời giải thích đầy đủ về :%s/^/\=line('.')/

+0

Đây là phép thuật .... Tôi thề, đây là phép thuật. ':)' – drN

4

Kể từ khi không có công nghệ được quy định trong các bài bản gốc, tôi muốn được hạnh phúc ở đây để giữ cho nó đơn giản.

(tất cả các giải pháp ưa thích Vim/bash là tốt nếu bạn biết mình đang làm gì).

  • Mở tệp CSV trong chương trình bảng tính yêu thích của bạn (Tôi đang sử dụng LibreOffice, nhưng Excel hoặc một máy Mac có nguồn gốc tương đương sẽ làm)
  • chèn một cột bên trái của cột A
  • Nhập 1 vào ô A2, ô đầu tiên dưới các tiêu đề
  • nhấp đúp vào blob ở góc dưới bên phải của tế bào như trong ảnh chụp màn hình:

LibreOffice wizardry

Bước cuối cùng này sẽ điền vào cột chỉ mục với 1,2,3..., vv Sau đó, bạn có thể lưu bảng tính kết quả dưới dạng tệp CSV.

+0

Cảm ơn bạn đã trả lời. Tôi không thể sử dụng chương trình bảng tính do kích thước của tệp. Đó là khoảng 6GB. Đó là lý do tại sao tôi đã xem xét các giải pháp kiểu Unix. – SharkSandwich

+1

Tại sao bạn không thêm vào bài đăng gốc tất cả các chi tiết mà bạn đã thêm vào trong các nhận xét khác nhau cho các câu trả lời khác nhau? Nó sẽ tiết kiệm nhiều người hơn để đoán tình hình của bạn là gì. – LondonRob

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