function changeNumberByPosition {
echo | string=$1 position=$2 newvalue=$3 \
awk -v FS=. -v OFS=. '{
$0=ENVIRON["string"];
$ENVIRON["position"]=ENVIRON["newvalue"];
print;
}';
}
Пример запуска:
NUMBERLIST=10.90.123.80.42
new=$(changeNumberByPosition "$NUMBERLIST" 4 19)
echo "$new"
10.90.123.19.42
или обновление существующего значения новым значением:
NUMBERLIST=10.90.123.80.42
NUMBERLIST=$(changeNumberByPosition "$NUMBERLIST" 4 19)
echo "$NUMBERLIST"
10.90.123.19.42
function changeNumberByPosition (
set -o noglob
IFS=.
a=($1);
a[$2]=$3;
printf '%s\n' "${a[*]}"
)
Версия только для bash функция:
a
на основе периодов, используя IFS. $2
значением в $3
. $a
не загромождает существующую среду.