Linux sed不';不要替换逗号

Linux sed不';不要替换逗号,linux,bash,sed,Linux,Bash,Sed,输出为: uptime=$(uptime | sed 's/^.*up//;s/:/ hours and /; s/, load/ minutes, load/g') 我希望输出如下: 2 days, 3 hours and 41, load average: 0.04, 0.07, 0.10 如何使用sed?您可能需要使用2个sed命令: 2 days, 3 hours and 41 minutes, load average: 0.04, 0.07, 0.10 实际上,它只有一个空间,

输出为:

uptime=$(uptime | sed 's/^.*up//;s/:/ hours and /; s/, load/ minutes, load/g')
我希望输出如下:

2 days, 3 hours and 41, load average: 0.04, 0.07, 0.10

如何使用
sed

您可能需要使用2个
sed
命令:

2 days, 3 hours and 41 minutes, load average: 0.04, 0.07, 0.10
实际上,它只有一个空间,可能不止一个空间:

uptime=$(uptime | sed 's/^.*up//;s/:/ hours and /' |sed 's/,\s\+load/ minutes, load/g' )

您可以使用分组直接捕获小时/分钟:

uptime | sed 's/^.*up//;s/:/ hours and /; s/,\s\+load/ minutes, load/g'

试试$(正常运行时间| sed's/^.*up/;s/:/hours and/;s/,[a-z0-9]*,load/minutes,load/g')。您可能缺少登录的用户。正常运行时间的直接输出是什么?在
之间添加一个额外的空格是否有帮助?@EtanReisner它已经解决了,但这并不能回答为什么你的不起作用。请先在您的终端上尝试您的命令,然后再将其发布到此处,它不起作用不起作用,给出
6天,18小时和34,1个用户分钟,平均负载:1.39,1.38,1.61
正确是
6天,18小时和34分钟,1个用户,平均负载:1.36,1.38,1.60
。这也是为什么我会在任何答案中发布我自己的命令的输出,如果它不长的话。@Jotne我认为OPs
uptime
output不包括用户数。如果他包含了正常运行时间输出,这将非常有用,因为它可能会有所不同。当您在系统中运行该命令时,您的输出是什么?我很难过,它总是很好地发布它。和你一样,但是我需要考虑他的系统的输出,而不是我的系统。再读一遍他的问题,你看不到用户的数量。
echo $(uptime | sed 's/^.*up//;s/\([0-9][0-9]*\):\([0-9][0-9]\)*/\1 hours and \2 minutes/')