将shell输出转换为float64?

我正在使用带有golang的外壳来访问apache日志文件并获取一些数据。 首先,我曾经将输出直接写到文件中并且可以正常工作,但是现在我需要获取输出并直接在程序中使用它。 而且我需要将其转换为float64。 我尝试将其转换为字符串,然后转换为float64,但是它不起作用?</ p>

  func Mem_usage_data(j int)(Mem_predict float64,err error){
awkPart: = fmt.Sprintf(“ awk'{print $%d / 1024}'”,j)

out1,错误:= exec.Command(“ bash”,“-c”,“ tail -n 1 / var /log/apache2/access.log |“ + awkPart +”“).Output()
fmt.Println(”内存用法为“,out1)
s1:=字符串(out1)
v1,err1:= strconv .parseFloat(s1,64)
如果err1!= nil {
fmt.Println(err)
}
如果err!= nil {
fmt.Println(err)
}
返回v1, err
}
</ code> </ pre>

当我打印出out1时,我会得到类似的信息[48 46 49 50 48 49 49 55 10]。 CAn,请帮助您获取out1中的确切输出以及如何将其转换为float64?</ p>
</ div>

展开原文

原文

i am using shell with golang to access apache log file and get some data. first i used to write output to the file directly and it was working, but now i need to get the output and use it in the program directly. and also i need to convert it to float64. i tried converting it into a string and then to float64, but it is not working?

func Mem_usage_data(j int) (Mem_predict float64, err error) {
    awkPart := fmt.Sprintf("awk '{print $%d/1024}'", j)

    out1, err := exec.Command("bash", "-c", "tail -n 1 /var/log/apache2/access.log| "+awkPart+" ").Output()
    fmt.Println("memory usage is", out1)
    s1 := string(out1)
    v1, err1 := strconv.ParseFloat(s1, 64)
    if err1 != nil {
        fmt.Println(err)
    }
    if err != nil {
        fmt.Println(err)
    }
    return v1, err
}

when i print the out1 i get something like this [48 46 49 50 48 49 49 55 10]. CAn you please help how to get the exact output in out1 and how to convert it into float64?

dqp4933
dqp4933 为什么在地球上会这样使用Bash和awk?他们所做的一切,Go都做不到(更有效,更便携)!
大约一年之前 回复
dph23577
dph23577 尝试fmt.Println(“内存用法为”,string(out1))
大约一年之前 回复

1个回答



转换失败,可能是因为 s1 </ code>上有一些空格或换行符。 进行转换之前,请先尝试修剪它。 使用 strings.TrimSpace()</ code>来实现。</ p>

  v1,err1:= strconv.ParseFloat(  strings.TrimSpace(s1),64)
</ code> </ pre>
</ div>

展开原文

原文

The conversion fails probably because there is some whitespace or newline character on s1. Try to trim it first before doing the conversion. Use strings.TrimSpace() to achieve that.

v1, err1 := strconv.ParseFloat(strings.TrimSpace(s1), 64)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问