Saya memiliki file teks besar yang terlihat seperti ini:
36,53,90478,0.58699759849,0.33616,4.83449759849,0.0695335954050315,3
36,53,90478,0.58699759849,0.33616,4.83449759849,0.0695335954050315,8
36,53,90478,0.58699759849,0.33616,4.83449759849,0.0695335954050315,14
36,53,15596,0.58454577855,0.26119,2.24878677855,0.116147072052964,12
Output yang diinginkan adalah ini:
36,53,90478,0.58699759849,0.33616,4.83449759849,0.0695335954050315,MI-03
36,53,90478,0.58699759849,0.33616,4.83449759849,0.0695335954050315,MI-08
36,53,90478,0.58699759849,0.33616,4.83449759849,0.0695335954050315,MI-14
36,53,15596,0.58454577855,0.26119,2.24878677855,0.116147072052964,MI-12
Saya telah mencoba posting lain yang relevan di sini dan di komunitas lain tetapi tidak bisa mendapatkan apa yang saya inginkan.
MEMPERBARUI
Ini adalah pertanyaan silang (saya ingin jawaban Unix / perl dan solusi batch / powershell untuk ini.) Yang memiliki jawaban menarik.
"1 2 3 4" | awk '{$2=$2;print $0}'
memberi:1 2 3 4
(hanya 1 spasi (atau OFS) yang tersisa di antara bidang). ex2)echo "1,,,2,3,,,,4" | awk -F',' '{$2=$2;print $0}'
memberi:1 2 3 4
(koma menjadi spasi). Mungkin ada efek samping lain. Uji dan ambil pendekatan lain (gsub pada salinan variabel $ 0, misalnya) jika menentukan bidang memiliki efek samping yang merugikan.Anda dapat mencoba menggunakan
awk
:sumber
Inilah solusi perl:
The
-a
bendera memungkinkan kita untuk memperlakukan input sebagai array, berdasarkan pemisah ditentukan dengan-F
. Pada dasarnya kami mengubah item terakhir dalam array itu, dan membangunnya kembali melaluijoin
perintah.sumber
sprintf
merupakan ide inti dari jawaban Anda. Tidak seperti jika itu tidak benar, hanya saja tidak menawarkan sesuatu yang berbeda dari jawaban yang diterima. +1 lagian.sprintf()
digunakan secara khas saat menulis string format tertentu ke variabel, itulah sebabnya mengapa digunakan dalam banyak bahasa lain. Saya bisa menulis dengan Python juga - Python tidak punyasprintf()
tapi ide inti akan tetap sama - menulis string yang diformat ke variabel. Atau, kami dapat beroperasi pada item array secara langsung dan hanya mencetaknya. Dengan jenis pertanyaan ini ada sejumlah solusi yang terbatas, pada dasarnya adalah apa yang saya coba katakanDengan input data seperti:
di text.csv
kode di bawah ini
menghasilkan output seperti:
sumber
Tcl
Berikut ini adalah solusi saya, selesai menggunakan Tcl yang membaca dari file input.csv dan meletakkan hasilnya dalam file output.csv
demonstrasi
sumber