Jika Anda ingin:
tambahkan ini ke skrip yang ada.
Anda dapat memasukkan \"\" tambahan di setiap argumen print seperti ini:
print "\"admin\"", "\"base\"", ...
Diedit:
Ya, mungkin menyetel OFS adalah solusi yang lebih baik:
BEGIN { OFS="\";\""; } ... print "\"admin", ...., "simple\"";
awk '{for (i=1;i<=NF;i++) $i="\""$i"\""}1' FS=";" OFS=";" input
Untuk menambahkan kutipan di sekitar entri, Anda dapat menggunakan loop AWK sederhana:
Skrip - simple_loop.awk
BEGIN {FS=";"}
{
for(i=1;i<NF;i++){
printf("\"%s\";", $i);
}
printf("\"%s\"\n",$NF);
}
Misalnya
echo "admin;base;5.11 HOLSTER SHIRT L WHITE;;" | awk -f simple_loop.awk
Harus keluar
"admin";"base";"5.11 HOLSTER SHIRT L WHITE";"";""
Dalam hal ini saya akan menggunakan sed ekspresi, bukan AWK.
Jika data Anda ada dalam file bernama data.txt , Anda bisa membuatnya menulis:
sed "s/;/\";\"/g;s/^/\"/;s/$/\"/" data.txt
Itu akan mencetak hasilnya ke output std, tetapi jika Anda ingin mengganti konten file, gunakan saja sed -i dengan cara ini:
sed -i "s/;/\";\"/g;s/^/\"/;s/$/\"/" data.txt
Dan itu saja!!
Penjelasan: sed ekspresi terdiri dari tiga sed perintah dipisahkan oleh ";" yang dapat Anda jalankan secara terpisah:
sed "s/;/\";\"/g
Itu membuat substitusi (itulah yang berarti "s" pertama), lalu "/" (pemisah default), ";" itulah yang ingin kita ganti. Kemudian pemisah kedua "/", dan penggantinya:\";\" Ini adalah urutan:kutipan yang lolos, titik koma dan kutipan yang lolos. Jadi dengan perintah ini kita akan mengganti titik koma ; oleh ";" . /g terakhir artinya setiap ; akan diganti (bukan hanya titik koma pertama).
Jika masukannya adalah a;b;c setelah menjalankan perintah pertama ini akan menjadi a";"b";"c .
Sekarang kita perlu menambahkan tanda kutip di awal (^ dalam ekspresi reguler) dan pada akhirnya ($ ). Jadi itulah artinya:
sed "s/^/\"/" // the first quote
Dan
sed "s/$/\"/" // the last quote
Mendapatkan keluaran yang diinginkan:
"a";"b";"c"