AWK删除一行?

AWK删除一行?

这是我的正常运行时间

uptime=`uptime|grep days|awk '{print$3,$4}'`

但现在显示:23 days,

我想删除,最后的。

我怎样才能做到这一点?

答案1

尝试:

uptime | awk -F'[, ]' '{print $3,$4}'

答案2

尝试

uptime | awk '/days/ { printf "%s%s",$3,substr($4,1,length($4)-1) ; }' 

示例测试,ubuntu 14.04.1,

mybox $  uptime
 14:36:13 up 2 days, 23:41,  2 users,  load average: 0,17, 0,18, 0,14
mybox $  x=$(uptime | awk '/days/ { printf "%s%s",$3,substr($4,1,length($4)-1) ; }' )
mybox $  echo $x
2days
mybox $  

答案3

您可能更喜欢直接解析正常运行时间伪文件,如下所示:

uptime="$(( `cat /proc/uptime  | cut -f1 -d.` / 86400 )) days"

如果正常运行时间少于 1 天,它将显示“0 天”而不是不显示任何内容。

答案4

不需要grep,因为该uptime命令仅显示一行:

$ uptime
 1:15PM  up 2 days, 14:04, 1 user, load averages: 1.12, 1.12, 1.08

或者

$ uptime
 1:24PM  up 8 mins, 1 user, load averages: 1.27, 1.17, 0.62  

假设您想提取up第一个逗号之间的位(2 days8 mins分别在上面的两个示例中):

$ uptime | sed 's/^.*up \([^,]*\).*$/\1/'
19 mins

sed 脚本将用第一个逗号s/^.*up \([^,]*\).*$/\1/之间的字符串替换整个输入行。up␣

相关内容