С awk
:
awk -F';' -v OFS=';' -v id="niub16677500" -v new_group="BC0" '{if($1==id)$3=new_group}1' input.csv
ID;TAG;GROUP
niub16677500;B00;BC0
Перенаправьте вывод в файл и обратите внимание, что заголовок csv должен использовать тот же разделитель полей, что и тело.
Пояснения
-F';'
чтобы иметь разделитель входного поля как ;
-v OFS=';'
то же самое для выхода FS
-v id="niub16677500" -v new_group="BC0"
определяет переменные, которые вы собираетесь использовать в командах awk
'{if($1==id)$3=new_group}1'
, когда первый столбец равен значению, содержащемуся в переменной id
, перезаписать 3-е поле и вывести строку
С sed
:
id="niub16677500"; new_group="BC0"; sed "/^$id/s/;[^;]*$/;$new_group/" input.csv
ID;TAG;GROUP
niub16677500;B00;BC0
Вы можете сделать внутреннее изменение, используя опцию -i.bak
, или перенаправить вывод в файл.
Пояснения
- Сохранить значения в 2 переменных
/^$id/
когда вы достигнете строки, которая начинается с хранилища идентификаторов в переменной id, запустите поиск sed и замените
s/;[^;]*$/;$new_group/
команда поиска и замены, которая заменит последнее поле новым значением