... | sed -r "s/[0-9\-]+T[0-9:]+Z/$(my_uptime \0)/"
Этот код пытается передать совпадающее значение из sed * s///
в функцию оболочки.Тем не менее, $(...)
раскрывается до того, как sed даже видит его.
Использование sed, вероятно, здесь неуместно.
Вот замена perl, которая эффективно комбинирует вашу функцию оболочки и sed:
... | perl -ple '
if (/([0-9-]+T[0-9:]+Z)/) {
$s = `date -d "$1" +%s`;
$n = time;
$h = int(($n-$s)/3600);
$m = int(($n-$s)/60)%60;
$_ = "Uptime $h h $m min";
}'
Возможно, вы могли бы сделать что-то подобное в awk.