Не могли бы вы попробовать следующее. Написано и протестировано с показанными образцами.
awk 'FNR==NR{if(FNR==1){a[$1]=$NF;next};match($0,/[0-9]+ days/);a[$1]=substr($0,RSTART,RLENGTH);next} {print $0,a[$1]}' <(xen uptime) <(xen list)
ИЛИ с добавлением не одной вкладки формы решения:
awk '
FNR==NR{
if(FNR==1){
a[$1]=$NF
next
}
match($0,/[0-9]+ days/)
a[$1]=substr($0,RSTART,RLENGTH)
next
}
{
print $0,a[$1]
}' <(xen uptime) <(xen list)
РЕДАКТИРОВАТЬ: Согласно OP, если кто-то хочет не хотеть печатать значения State и Time, попробуйте выполнить следующее.
awk '
FNR==NR{
if(FNR==1){
a[$1]=$NF
next
}
match($0,/[0-9]+ days/)
a[$1]=substr($0,RSTART,RLENGTH)
next
}
{
$NF=$(NF-1)=""
sub(/ +$/,"")
print $0,a[$1]
}' <(xen uptime) <(xen list)