我已经详细说明了一个收集shell输出的awk
命令:
val=$(./cli.sh --file=scripts/monitor.sh | awk '/result/{print $3}')
echo $val
返回:
"75"
正如您所看到的,输出正确返回,但我需要将其转换为整数。是否有awk
函数可以执行此操作?
答案 0 :(得分:2)
您可以使用gsub()
删除引号:
$ echo '"3"' | awk '{gsub("\"", "", $1); print}'
3
在你的情况下,这应该是:
val=$(./cli.sh ... | awk '/result/{gsub("\"", "", $3); print $3}')
示例文件:
$ cat a
returns a b "75"
returns b c "33"
returns d e 7
hello z z 7
让我们运行它:
$ awk '/return/ {gsub("\"", "", $4); print $4}' a
75
33
7
答案 1 :(得分:0)
尝试:
val=$(./cli.sh --file=scripts/monitor.sh | awk '/result/{print substr($3, 2, length($2)-1)}')
echo $val