출력을 awk 또는 sed로 교체

출력을 awk 또는 sed로 교체

그래서 저는 bash의 특정 출력을 awk로 바꾸려고 노력해 왔습니다. 그러나 나는 그것을 작동시킬 수 없는 것 같습니다. "uptime"의 $6 출력을 "user" 대신 "user"로 바꾸려고 합니다. 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

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

파이썬

!/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

관련 정보