我有这个命令可以得到一定的输出; 命令;
uptime | sed -e 's/^[ \t]*//' > temp
awk '{ sub(" min","") sub("users", "user");print > "temp" }' ./temp
当我做猫临时工时,输出变为;
13:24:16上1:33,3个用户,平均负载:0.30、0.56、0.63
我要用此命令创建的新时间替换1:33;
awk '{printf("%02d:%02d\n",($1/60/60%24),($1/60%60))}' /proc/uptime > temp2
这作为输出;
01:33
因此,总而言之,我想用第二个命令01:33的输出替换第一个命令的输出中的1:33。我一直在谷歌搜索和尝试,但是我一直失败,所以我决定来这里。我发现了sed,awk和grep的解决方案。但是我找不到解决这个问题的完美方法。
答案 0 :(得分:0)
用正则表达式匹配字符串,并用sed
替换。
echo '13:24:16 up 1:33, 3 user, load average: 0.30, 0.56, 0.63' |
sed 's/up [^,]*,/up '"$(awk '{printf("%02d:%02d\n",($1/60/60%24),($1/60%60))}' /proc/uptime)"',/'
将输出(在我的系统上):
13:24:16 up 03:58, 3 user, load average: 0.30, 0.56, 0.63
答案 1 :(得分:0)
似乎您正在尝试将人类可以理解的时间转换为HH:MM:SS
:
uptime | awk '
NR==1 {t = sprintf("%02d:%02d:%02d", $1/3600, $1%3600/60, $1%60); next}
{split($0, a, " "); print $1, $2, t, a[2], a[3]}
' /proc/uptime -
10:24:39 up 00:53:05 1 users, load average: 0.52, 0.58, 0.59