Buka file teks dalam Bilangan ketika dibatasi ruang, tetapi beberapa bidang diberi tanda kutip dengan spasi

0

Saya memiliki file log yang ingin saya buka dalam Angka agar lebih mudah menyaringnya. Masalahnya adalah formatnya bukan CSV. Setiap baris memiliki sekitar selusin bidang, dan bidang itu sendiri dipisahkan oleh spasi. Namun, beberapa bidang yaitu string, yang mengandung ruang, jadi saya tidak bisa hanya melakukan menemukan menggantikan untuk ruang dan menempatkan koma dalam Satu lapangan, tanggal, sebenarnya diformat seperti ini.: [06/Feb/2018:03:27:37 +0000]. Tampaknya ini adalah satu-satunya tempat di mana [] digunakan, jadi saya dapat menemukan / menggantikannya dengan ", tetapi saya masih kesulitan mengimpor dokumen. Ini menempatkan setiap baris dalam satu kolom.

Jadi, untuk meringkas, tujuan saya adalah mengambil file input dan memecah setiap baris sehingga spasi adalah pembatas, tetapi mengabaikan spasi dalam tanda kutip.

Jake T.
sumber
ganti spasi di luar [] dengan karakter tab
Tandai
Bagaimana saya melakukannya tanpa mengganti spasi di dalam [] juga? Ini file besar.
Jake T.
1
jika Anda memiliki editor yang dapat menggunakan regex (misalnya textwrangler atau bbedit) atau Anda bersedia menggunakan sed (dalam hal ini ingat flag -E) atau untuk menulis filter kecil dalam bahasa apa pun yang Anda tahu (misalnya perl atau python ), Anda dapat mengubah tanda kurung menjadi "s dan kemudian menggunakan regex s / \ (? = (?: [^"] * "[^"] * ") * [^"] * $) / \ t / g (bukan karena saya ini baik dengan regex, itu dijelaskan di sini: regex101.com/r/sU3fA2/29 )
Gio Valerio
hanya ingin tahu, tetapi file tersebut bukan bidang panjang tetap (tetapi untuk teks log), bukan?
Gio Valerio
@ GioValerio Maksud Anda jumlah bidang per baris? Jika demikian, itu tampaknya bidang yang diperbaiki panjang, dengan bidang tanpa data yang memiliki simbol '-' sebagai gantinya. Saya tidak pernah menggunakan RegEx tetapi apakah itu terlihat seperti Anda bisa menyukainya. Terima kasih atas tautan / regex.
Jake T.

Jawaban:

2

jika Anda memiliki editor yang dapat menggunakan regex (misalnya textwrangler atau bbedit)
atau Anda bersedia menggunakan sed (dalam hal ini ingat flag -E)
atau Anda dapat menulis filter kecil dalam bahasa apa pun yang Anda kenal (misalnya perl atau python),
Anda dapat mengubah tanda kurung menjadi "s dan kemudian menggunakan regex:
s / \ (? = (?: [^"] "[^"] ") [^"] $) / \ t / g
untuk mengonversi ruang apa pun yang tidak berada di antara tanda kutip menjadi tab, sehingga Numbers akan mengimpornya dengan benar (bukan saya yang baik dengan regex, dijelaskan di sini: regex101.com/r/sU3fA2/29)

Gio Valerio
sumber