Saya memiliki file CSV besar yang harus saya hapus kolom data pertama. Saya tidak bisa membukanya di Excel karena Excel mengonversi beberapa nilai dalam kolom ke angka ilmiah.
Saya menggunakan Notepad ++ , dan saya mencoba merangkai kolom pertama dari file EXE,
1,Value1,value2,value3,value4,value5
3445,Value1,value2,value3,value4,value5
12345,Value1,value2,value3,value4,value5
1234,Value1,value2,value3,value4,value5
11,Value1,value2,value3,value4,value5
agar terlihat seperti
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
sumber
^[^,]+,
dan ganti dengan yang kosong?Tekan Ctrl+ Hdan lakukan penggantian berikut:
Sekarang tekan Alt+ Auntuk mengganti semua kemunculan.
Bagaimana itu bekerja
The ekspresi reguler
.*?,(.*)
cocok seluruh baris:.*?,
cocok dengan semuanya sebelum koma pertama, termasuk koma itu sendiri..*
berarti jumlah kemunculan karakter apa pun, dan tanda tanya membuat kuantifier malas , yaitu, sesedikit mungkin karakter cocok.(.*)
cocok dengan semuanya setelah koma pertama.Melampirkan
.*
dalam tanda kurung mengubahnya menjadi subpattern, sehingga tiang dapat diakses di bidang ganti.\1
mewakili pengiriman pertama (cocok untuk(.*)
).Akibatnya, Notepad ++ mengganti baris dengan segala sesuatu yang mengikuti koma pertama.
sumber
^[^,]+,
secara global diganti dengan string kosong tidak akan berfungsi di Notepad ++. (+1)Di Windows, Anda dapat melakukannya sebagai berikut.
Saya berasumsi bahwa Anda hanya memiliki 6 kolom. Jika Anda memiliki lebih banyak kolom, coba bereksperimen dengan * di bidang token. Ide diambil dari Windows untuk perintah
sumber
for /F "tokens=1* delims=," %i in (Input.csv) do @echo %j >> output.csv
Dengan asumsi Anda memiliki sistem linux atau lingkungan gaya unix (saya suka gow , atau Anda dapat menghapus utilitas dari unixutils ) Saya percaya menjalankan file melalui
cut -d , -f2-6
harus melakukan trik - itu harus, jika saya ingat dengan benar akan melakukan trik --d
set the pembatas, danf2-6
mencetak karakter kedua hingga ke-6.cat input.csv | cut -d , -f2-6 > output.csv
akan melakukan trik mengambil file input dan mengeluarkan file output. Ini tidak menggunakan notepad, tetapi cepat dan sangat sederhana.sumber
Anda harus dapat memuat CSV ke excel dan menjadikannya memperlakukan angka sebagai teks (mencegahnya beralih ke angka ilmiah).
sumber
Notepad ++ memiliki pengeditan kolom bawaan dan perintah Line Up by (,) (plugin TextFX) yang memberikan solusi titik-dan-klik grafis yang mungkin pertama kali benar. Ini menghindari keharusan menggunakan ekspresi reguler atau pemrograman shell, yang keduanya biasanya memerlukan debugging sampai mereka melakukan apa yang Anda inginkan dan tidak lebih.
Titik awal : File CSV dengan kolom tidak selaras, sehingga tidak mudah diedit oleh kolom ...
Prosedur:
Pilih baris yang diminati - mungkin seluruh file.
Gunakan perintah menu TextFX> Edit TextFX> Line up Multiple Lines by Comma (,) Baris ini semua baris dengan kolom dan membuat pengeditan kolom mudah.
Masuk ke Mode Kolom di kolom setelah koma pertama (,) Untuk sejumlah kecil baris, gunakan perintah keyboard: Alt + Shift + DownArrow.
Jika perlu mengerjakan banyak baris (file besar), gunakan Alt + mouse dan klik kolom yang diinginkan dari baris pertama , kemudian pindah ke baris terakhir file dan Alt + Shift + klik posisi kolom yang sama. Ini mengaktifkan mode kolom pada file SELURUH - Anda akan melihat garis vertikal di belakang semua koma.
Hapus dalam mode kolom menghapus seluruh kolom karakter. Jadi, Anda dapat menghapus semuanya sebelum koma pertama di semua baris sekaligus untuk mendapatkan:
Selesai!
Komentar tentang solusi ini dibandingkan dengan berbagai yang lain yang disarankan sejauh ini:
Pengeditan Mode Kolom cukup kuat dan, ketika dikombinasikan dengan opsi plugin TextFX, berlaku untuk berbagai situasi dengan cara point-and-quick.
Misalnya, jika Anda memutuskan untuk menghapus kolom ke-2, atau kolom ke-N dengan cepat, pendekatan ini hampir tidak ada modifikasi.
Ekspresi reguler, skrip shell, di sisi lain, akan mencapai tujuan, ya, tetapi dalam masalah rumit Anda akan menghabiskan lebih banyak waktu "menghilangkan bug" sintaks Anda.
Fungsionalitas bawaan Notepad ++ yang serbaguna adalah salah satu kekuatan utamanya: Anda mendapatkan kekuatan yang cukup tanpa harus menggunakan "pemrograman".
sumber
Jika Anda terbiasa dengan plugin konsol Python untuk Notepad ++, saya dapat menyarankan Anda metode lain. Anda perlu menambahkan teks pada dokumen Notepad ++ dan menjalankan skrip berikutnya di konsol:
Script ini menambahkan teks hasil ke dokumen Notepad ++ Anda saat ini.
sumber
Jalankan
vim
(dalam mode perintah, jika tidak tekan Escape).Ketik perintah berikut untuk memetakan tindakan menghapus kolom pertama ke
q
kunci:Yang berarti:
0
- pergi ke awal barisdf,
- d apus semuanya sampai , karakter (termasuk tanda koma),j
- turun satu baris0
- pergi ke awal barisKemudian terapkan tindakan ini ke semua baris:
Yang berarti, jalankan tindakan yang ditugaskan untuk kunci
q
dari garis awal (0) hingga akhir ($).sumber
:%s/^[^,]\+,//g
?