Làm cách nào để xóa tất cả các phiên bản của một biểu tượng cụ thể khỏi tệp văn bản?


13

Tôi đã có một tệp CSV lớn (khoảng một nửa GiB, không thể sử dụng trình soạn thảo văn bản thông thường trên) với các trường được đặt trong dấu ngoặc kép như "abc","def"nhưng cần một tệp không có dấu ngoặc kép (Tôi chắc chắn rằng điều này sẽ không phá vỡ tính nhất quán của tệp - dấu phẩy không bao giờ được sử dụng bên trong các giá trị trong đó).

Làm thế nào để loại bỏ tất cả các trích dẫn (mà không giới thiệu không gian trên địa điểm của họ)?

Câu trả lời:


21

tr có thể làm điều đó:

tr -d \" < infile > outfile

Bạn cũng có thể sử dụng sed:

sed 's/"//g' < infile > outfile

1
Tại sao bạn loại bỏ < infile > outfile? IMHO nó đã được nhiều thông tin hơn.
Ivan

@Ivan Tôi nghĩ rằng nó có thể tiềm ẩn trong suy nghĩ thứ hai.
Chris Xuống

Chỉ khi cho người dùng dòng lệnh có kinh nghiệm. Mặc dù tôi đã sử dụng <trước đây một vài lần (để nhập tập lệnh SQL vào MySQL và SQLite) Tôi có thể sử dụng ngay lập tức <trong trường hợp này. Tôi nghĩ sẽ tốt hơn nếu trả lại ví dụ dòng lệnh đầy đủ để tham khảo thêm về những người có thể cần nó.
Ivan

@Ivan và @Chris, tôi đã hoàn nguyên lại (chờ đánh giá) để đưa vào < infile > outfile, hy vọng điều đó ổn.
donothings thành công

Cảm ơn, @donothingsuccess thành công. Tôi đã hoàn toàn nhầm lẫn nhận xét trước đó, thật đáng tiếc tôi không thể chỉnh sửa nó% -]
Ivan

5

Một phiên bản khác của lệnh sed :

sed -i s/\"//g file.txt
  • sed s tream ed itor

    • -i i n-place (chỉnh sửa tập tin tại chỗ)
    • scác s lệnh ubstitute
    • /replacement_from_reg_exp/replacement_to_text/ tuyên bố
    • \"trích dẫn đi trước dấu gạch chéo ngược ( thay thế_from_reg_bao )
    • chuỗi trống giữa các dấu gạch chéo ( thay thế_to lòng )
    • g g lobal (để thay thế tất cả sự xuất hiện trong dòng)
  • file.txt tên tập tin

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.