Я хочу добавить столбец (2-е место) в .csv
файл и хочу, чтобы значения этого столбца были строками и заключались в кавычки;
Следующая команда добавляет столбец, но без кавычек:
awk -F"," 'BEGIN { OFS = "," } {$2="2.4.0"; print}' test.csv > output.csv
Следующий подход включает в себя кавычки, но по какой-то причине он удаляет последнюю .
(точку) из значения
awk -F"," 'BEGIN { OFS = "," } {$2="\""2.4.0"\""; print}' test.csv > output.csv
так что мои значения в конечном итоге "2,40".
Как я должен идти об этом?
Ответы:
Вы, кажется, ошиблись в кавычках. Вам нужно сделать как ниже
Это объясняется на man-странице GNU awk - 3.2 Escape-последовательности
Что касается причины, по которой я мог понять причину такого поведения, то,
awk
похоже, интерпретировал его2.4.0
как числовое слово с дополнительными кавычками из вашего ОП и решает потерять точность после первой точки.т.е.
становится просто
который
awk
больше не понимает как строка. Вы можете воспроизвести это поведение, просто выполнивкоторый оказывается результатом, когда вы делаете
источник
{ print 2.4.0 }
или{ print 2.4.0 + 0 }
, то есть как нестроковая составляющая. Я тоже пытался найти соответствующие документы, но не смогawk -v q='"' '... print q "2.4.0" q ...