Как добавить значение переменной в начале файла CSV - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть файл CSV (sample1.csv), в который мне нужно добавить значение x в качестве первого столбца всего CSV. Мой код выглядит следующим образом:

code:

x=24 feb 20 12:29:30
awk -v d="$x" -F"," 'BEGIN { OFS = "," } {$1=d; print}' sample1.csv > sample2.csv

Приведенный выше код заменяет первое поле CSV значением x вместо добавления значения x в начале.

sample1.csv

TV,Sony,40,smart
TV,LG,32,smart

sample2.csv [ожидаемый результат]

24 feb 20 12:29:30,TV,Sony,40,smart
24 feb 20 12:29:30,TV,LG,32,smart

Спасибо

Ответы [ 4 ]

1 голос
/ 24 февраля 2020

проще с sed

$ sed 's/^/24 feb 20 12:29:30,/' file
1 голос
/ 24 февраля 2020

Вы ооочень близки. Попробуйте это:

x="24 feb 20 12:29:30"
awk -v d="$x"  'BEGIN { OFS = "," } {print d,$0 }' sample1.csv > sample2.csv
1 голос
/ 24 февраля 2020

Вы можете использовать это awk для добавления переменной перед $1;

awk -v d="$x" 'BEGIN{FS=OFS=","} {$1=d OFS $1} 1' file.csv

Или использовать этот awk с sub вызовом функции, который заменяет начало строки значением переменной и вашим разделителем полей (запятая):

awk -v d="$x" -F, '{sub(/^/, d FS)} 1' file.csv

24 feb 20 12:29:30,TV,Sony,40,smart
24 feb 20 12:29:30,TV,LG,32,smart
0 голосов
/ 25 февраля 2020

Использование Миллера (https://github.com/johnkerl/miller) равно

mlr --csv -N put '$value="24 feb 20 12:29:30"' then reorder -f value input.csv >output.csv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...