Вопрос

Я хочу добавить один к последнему значению в конце строки в 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 Если вам не нужно плавать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top