Tırnak işaretleri yanlış gözüküyor. Aşağıdaki gibi yapmanız gerekir
awk -F"," 'BEGIN { OFS = "," } {$2="\"2.4.0\""; print}' test.csv > output.csv
Bu GNU awk man sayfasında açıklanmaktadır - 3.2 Kaçış Dizileri
Bazı karakterler tam olarak dize sabitlerine ("foo")
veya regexp sabitlerine ( /foo/
) dahil edilemez . Bunun yerine, ters eğik çizgi ( \
) ile başlayan karakter dizileri olan kaçış dizileri ile temsil edilmelidirler . Bir kaçış dizisinin kullanımlarından biri, bir dize sabitine bir çift tırnak karakteri eklemektir. Düz bir çift tırnak dizgeyi sonlandırdığından, dizenin \"
bir parçası olarak gerçek bir çift tırnak karakterini temsil etmek için kullanmalısınız .
Davranışın nedenini anlayabildiğim kadarıyla, OP'nizden ekstra alıntılarla sayısal bir kelime olarak awk
yorumlanmış 2.4.0
gibi görünüyor ve ilk noktadan sonra hassasiyeti kaybetmeye karar veriyor.
yani
$2="\""2.4.0"\""
sadece olur
$2=""2.4.0""
hangi awk
artık bir dize olarak anlamaktadır. Bu davranışı basitçe yaparak yeniden oluşturabilirsiniz.
awk 'BEGIN { print ""2.4.0"" }'
2.40
bunu yaptığınızda sonuç olur
awk 'BEGIN { print 2.4.0 + 0 }'