примечание: В этом ответе предполагается, что в поле CSV нет записистроки ("string"
) со встроенными - или -характерами .
Если вышеприведенное не относится к вашей проблеме, необходимы другие подходы.Полезные ссылки:
Если вы хотите добавить столбец в файл CSV, вы можете сделать следующее:
добавить столбец в начале:
awk 'BEGIN{FS=OFS=","}{print new_value OFS $0}' file
добавить столбец в конце:
awk 'BEGIN{FS=OFS=","}{print $0 OFS new_value}' file
добавить столбец перед столбцом n
:
awk 'BEGIN{FS=OFS=","}{$n=new_value OFS $n}1' file
добавить столбец после столбца n
:
awk 'BEGIN{FS=OFS=","}{$n=$n OFS new_value}1' file
добавить столбец перед каждым из столбцов n1
<<code>n2 <... <<code>nm: (начало сзади)
awk 'BEGIN{FS=OFS=","; split("n1,n2,n3,...,nm",a)}
{for(i=m;i>0;--i) $(a[i])=new_value OFS $(a[i])}1' file
или для других значений
awk 'BEGIN{FS=OFS=","; split("n1,n2,n3,...,nm",a); split("value1,value2,...,valuem",v)}
{for(i=m;i>0;--i) $(a[i])=v[i] OFS $(a[i])}1' file
добавить столбец после каждого столбца n1
<<code>n2 <... <<code>nm: (начало сзади)
awk 'BEGIN{FS=OFS=","; split("n1,n2,n3,...,nm",a)}
{for(i=m;i>0;--i) $(a[i])=$(a[i]) OFS new_value}1' file
или для других значений
awk 'BEGIN{FS=OFS=","; split("n1,n2,n3,...,nm",a); split("value1,value2,...,valuem",v)}
{for(i=m;i>0;--i) $(a[i])=$(a[i]) OFS v[i]}1' file