Ви, здається, помилилися цитатами. Вам потрібно зробити так, як нижче
awk -F"," 'BEGIN { OFS = "," } {$2="\"2.4.0\""; print}' test.csv > output.csv
Це пояснено на сторінці GNU awk man - 3.2 Послідовності втечі
Деякі символи не можуть бути включені буквально до констант рядка ("foo")
або констант регулярних виразів ( /foo/
). Натомість вони повинні бути представлені послідовностями, що складаються з символів, що є послідовностями символів, що починаються з косої риски ( \
). Одним із застосувань послідовності відведення є включення символу з подвійним цитуванням у строковій константі. Оскільки звичайна подвійна цитата закінчує рядок, ви повинні використовувати \"
для подання фактичного символу подвійної лапки як частини рядка.
Наскільки я могла зрозуміти причину поведінки, awk
схоже, вона інтерпретувала 2.4.0
як числове слово з додатковими цитатами вашого ОП і вирішує втратити точність після першої крапки.
тобто
$2="\""2.4.0"\""
стає справедливим
$2=""2.4.0""
який awk
вже не розуміється як струна. Ви можете відтворити таку поведінку, просто зробивши це
awk 'BEGIN { print ""2.4.0"" }'
2.40
що трапляється як результат, коли ви це робите
awk 'BEGIN { print 2.4.0 + 0 }'