Вы, кажется, ошиблись в кавычках. Вам нужно сделать как ниже
awk -F"," 'BEGIN { OFS = "," } {$2="\"2.4.0\""; print}' test.csv > output.csv
Это объясняется на man-странице GNU awk - 3.2 Escape-последовательности
Некоторые символы не могут быть включены буквально в строковые константы ("foo")или константы регулярного выражения ( /foo/). Вместо этого они должны быть представлены escape-последовательностями, которые являются символьными последовательностями, начинающимися с обратной косой черты ( \). Одним из вариантов использования escape-последовательности является включение символа двойной кавычки в строковую константу. Поскольку простая двойная кавычка оканчивает строку, вы должны использовать ее \"для представления действительного символа двойной кавычки как части строки.
Что касается причины, по которой я мог понять причину такого поведения, то, 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 }'