Chinaunix
标题:
将df -h输出成json数组,怎么去掉最后一行的","?
[打印本页]
作者:
yaoyefengyun
时间:
2015-07-16 09:30
标题:
将df -h输出成json数组,怎么去掉最后一行的","?
本帖最后由 yaoyefengyun 于 2015-07-16 09:59 编辑
#!/bin/bash
printf "[\n"
df -h | awk 'NR>1 {printf "{\"Filesystem\":\"%s\",\"Size\":\"%s\",\"Used\":\"%s\",\"Avail\":\"%s\"},\n", $1, $2, $3, $4}'
printf "]"
这个脚本会输出类似如下信息:
[
{"Filesystem":"/dev/sda5","Size":"46G","Used":"299M","Avail":"44G"},
{"Filesystem":"udev","Size":"10M","Used":"0","Avail":"10M"},
{"Filesystem":"tmpfs","Size":"774M","Used":"1.1M","Avail":"773M"},
{"Filesystem":"/dev/sda6","Size":"46G","Used":"5.4G","Avail":"38G"},
{"Filesystem":"tmpfs","Size":"1.9G","Used":"160K","Avail":"1.9G"},
{"Filesystem":"tmpfs","Size":"5.0M","Used":"4.0K","Avail":"5.0M"},
{"Filesystem":"tmpfs","Size":"1.9G","Used":"0","Avail":"1.9G"},
{"Filesystem":"/dev/sda7","Size":"28G","Used":"2.7G","Avail":"24G"},
{"Filesystem":"/dev/sda8","Size":"28G","Used":"45M","Avail":"26G"},
{"Filesystem":"/dev/sda1","Size":"453M","Used":"41M","Avail":"386M"},
{"Filesystem":"/dev/sda2","Size":"275G","Used":"47G","Avail":"215G"},
{"Filesystem":"tmpfs","Size":"387M","Used":"8.0K","Avail":"387M"},
{"Filesystem":"tmpfs","Size":"387M","Used":"24K","Avail":"387M"},
]
最后一个{...}行末尾的","该怎么去掉啊?(之前没说清楚,补充下)
================================
最后一行的","该怎么去掉啊
作者:
haooooaaa
时间:
2015-07-16 09:34
这东西从哪来的, 你直接去掉?
作者:
yaoyefengyun
时间:
2015-07-16 09:34
我自己写的一个脚本,刚学shell编程,不太会..
回复
2#
haooooaaa
作者:
haooooaaa
时间:
2015-07-16 09:39
回复
3#
yaoyefengyun
直接删除?
作者:
yaoyefengyun
时间:
2015-07-16 09:43
嗯,直接删除就可以,如果能教教最后一行不显示","的脚本该怎么写就更好了。
回复
4#
haooooaaa
作者:
leijskg
时间:
2015-07-16 09:44
提示:
作者被禁止或删除 内容自动屏蔽
作者:
yaoyefengyun
时间:
2015-07-16 09:48
实在抱歉,之前没说清楚,下次提问时我会注意的...
回复
6#
leijskg
作者:
haooooaaa
时间:
2015-07-16 09:51
如果这个数据是你脚本生成 的, 你直接 去掉啊,
不是,就 用 gsub("},","}") 类似这样...
作者:
yaoyefengyun
时间:
2015-07-16 09:53
好像回复没出来,这样脚本会输出类似这样的数据:
[
{"Filesystem":"/dev/sda5","Size":"46G","Used":"299M","Avail":"44G"},
{"Filesystem":"udev","Size":"10M","Used":"0","Avail":"10M"},
{"Filesystem":"tmpfs","Size":"774M","Used":"1.1M","Avail":"773M"},
{"Filesystem":"/dev/sda6","Size":"46G","Used":"5.4G","Avail":"38G"},
{"Filesystem":"tmpfs","Size":"1.9G","Used":"160K","Avail":"1.9G"},
{"Filesystem":"tmpfs","Size":"5.0M","Used":"4.0K","Avail":"5.0M"},
{"Filesystem":"tmpfs","Size":"1.9G","Used":"0","Avail":"1.9G"},
{"Filesystem":"/dev/sda7","Size":"28G","Used":"2.7G","Avail":"24G"},
{"Filesystem":"/dev/sda8","Size":"28G","Used":"45M","Avail":"26G"},
{"Filesystem":"/dev/sda1","Size":"453M","Used":"41M","Avail":"386M"},
{"Filesystem":"/dev/sda2","Size":"275G","Used":"47G","Avail":"215G"},
{"Filesystem":"tmpfs","Size":"387M","Used":"8.0K","Avail":"387M"},
{"Filesystem":"tmpfs","Size":"387M","Used":"24K","Avail":"387M"},
]
是指最后一个{...}行末尾的","怎么去掉
回复
6#
leijskg
作者:
haooooaaa
时间:
2015-07-16 09:58
awk '{sub("},","}")}1' file 就这样.
作者:
yaoyefengyun
时间:
2015-07-16 10:04
嗯,解决了,thx!
回复
11#
haooooaaa
作者:
yaoyefengyun
时间:
2015-07-16 10:04
嗯,解决了,thx!
回复
11#
haooooaaa
作者:
MMMIX
时间:
2015-07-16 10:12
回复
1#
yaoyefengyun
可以使用 join 函数:
@include "join"
BEGIN { print "["}
NR > 1 {
a[NR] = sprintf("{\"Filesystem\":\"%s\",\"Size\":\"%s\",\"Used\":\"%s\",\"Avail\":\"%s\"}", $1, $2, $3, $4)
}
END {
print join(a, 2, NR, ",\n")
print "]"
}
复制代码
作者:
leijskg
时间:
2015-07-16 10:19
提示:
作者被禁止或删除 内容自动屏蔽
作者:
yaoyefengyun
时间:
2015-07-16 10:27
shell脚本太神奇了,谢谢!
回复
15#
leijskg
作者:
yaoyefengyun
时间:
2015-07-16 10:29
这个还不懂,过段时间学习下,谢谢你!
回复
14#
MMMIX
作者:
hjfeng1988
时间:
2015-07-16 10:29
df -h | awk 'NR>1 {printf "{\"Filesystem\":\"%s\",\"Size\":\"%s\",\"Used\":\"%s\",\"Avail\":\"%s\"},\n", $1, $2, $3, $4}' | sed '$s/,$//'
复制代码
作者:
yaoyefengyun
时间:
2015-07-16 10:38
谢谢,好像回复没显示出来...
回复
18#
hjfeng1988
作者:
张馆长
时间:
2017-05-18 11:24
sed '1!N;s#,\n]#\n]#'
作者:
799029078
时间:
2017-05-18 12:35
帖子好久了
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2