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 awkyorumlanmış 2.4.0gibi görünüyor ve ilk noktadan sonra hassasiyeti kaybetmeye karar veriyor.
yani
$2="\""2.4.0"\""
sadece olur
$2=""2.4.0""
hangi awkartı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 }'