用 awk 或 sed 替换输出

用 awk 或 sed 替换输出

所以我一直在尝试用 awk 替换 bash 中的某个输出。但我似乎无法让它发挥作用。我正在尝试将“正常运行时间”中的 6 美元输出替换为“用户”而不是“用户”。如何使用 awk 或 sed 来完成此操作?

这是我当前脚本的“一部分”。

#!/bin/bash

since="`uptime --since`"
start="`date --date "$since" '+%s'`"
now="`date '+%s'`"
sec=$((now-start))

days=$((sec/(60*60*24)))
sec=$((sec-days*(60*60*24)))

hr=$((sec/(60*60)))
sec=$((sec-hr*(60*60)))

min=$((sec/60))
sec=$((sec-min*60))

rest="$(uptime | perl -npe'{s/(.*,\s+)(\d+\s+use)/$2/}')"

printf `uptime | awk '{print $1}'`" up %2d:%02d,  %s\n" $hr $min "$rest"

输出如下21:08:13 up 0:10, 3 users load average: 0.30, 0.30, 0.25

答案1

这看起来像是为了一件非常微不足道的事情付出了很大的努力。这是一个简单的命令,它将输出sed中的“user”替换为“user” :uptime

$ uptime | sed 's/users/user/'
 12:28:39 up 17:16,  7 user,  load average: 1.67, 1.41, 1.31

答案2

sed命令

uptime| sed '/users/s/users/user/g'

19:10:14 向上 1 分钟,2 个用户,平均负载:0.42、0.19、0.07

awk

uptime| awk '/users/{gsub("users","user",$0);print $0}'
 19:11:19 up 2 min,  2 user,  load average: 0.14, 0.15, 0.06

Python

!/usr/bin/python
import subprocess
cmd="uptime"
import re

k=subprocess.Popen(cmd,stdout=subprocess.PIPE,shell=True).communicate()[0].strip().split('\n')
#print k
for i in k:
    l=re.sub("users","user",i)
    print l

相关内容