Одна строка, используя SED и BC вместе?
Вопрос
Я хочу добавить один к последнему значению в конце строки в SED. Я думаю по линии
cat 0809_data.csv |sed -e 's/\([0-9]\{6\}\).*\(,[^,]*$\)/\1\2/g'| export YEARS = $(echo `grep -o '[^,]*$' + 1`|bc)
Например, 123456, KJHSFLK, LKSJGRLKS, 2.8 -> 123456, 3.8
Будет ли это более разумным / возможным в awk?
Решение
Это должно работать:
years=$(awk -F, 'BEGIN{ OFS=", "} {print $1, $4+1}' 0809_data.csv)
Было бы действительно неловко попытаться использовать sed
и сделать арифметику с частью результата. Вам придется разбить нить и сделать математику и поставить все обратно вместе. Awk делает это аккуратно без суеты.
Заметь cat
не нужно (даже с использованием sed
В команде, похожее на тот, который в вашем вопросе), и, вероятно, не нужно экспортировать переменную, если вы не вызываете еще один скрипт и не нужно иметь возможность получить доступ к нему как «глобальную» переменную. Кроме того, раковины обычно делают целочисленную математику, поэтому вам не нужно использовать bc
Если вам не нужно плавать.