Chinaunix
标题:
求解用shell在文件中取得特定数据,并且定义为变量!
[打印本页]
作者:
t895
时间:
2016-06-18 02:10
标题:
求解用shell在文件中取得特定数据,并且定义为变量!
本帖最后由 t895 于 2016-06-18 02:12 编辑
配置文件里面有非常多的数据,其中有两行是这样的
"server_port": 2288,
"password": "529670",
复制代码
我想用
shell命令cat awk grep sed任意一种
复制代码
取出2288或者529670这组数字并且定义为变量
如:
sdname=$(sed -n '/server_port/p' /etc/video.json)
复制代码
但是它输出为
"server_port": 2288,
复制代码
但是我只要其
2288
复制代码
的数字,其他都不要,请问大神门该如何写这个命令?
作者:
wjemail
时间:
2016-06-18 05:11
sdname=$(sed -n '/server/ s/[^0-9]*\([0-9]*\).*/\1/g p' q12)
复制代码
作者:
Herowinter
时间:
2016-06-18 06:29
回复
1#
t895
sdname=`grep -Po '(?<="server_port": )\d*' /etc/video.json`
复制代码
作者:
moperyblue
时间:
2016-06-18 08:33
sed -nr '/server_port/s/.*:\s*([0-9]+).*/\1/p'
sed -nr '/password/s/.*:\s*"([^"]*).*/\1/p'
复制代码
作者:
过过招
时间:
2016-06-18 10:31
var=`grep -o "[0-9]\+" urfile`
作者:
t895
时间:
2016-06-18 10:45
回复
2#
wjemail
这个命令可以,但是不知道为啥多了一个3?是什么情况
sed -n '/server/ s/[^0-9]*\([0-9]*\).*/\1/g p' /etc/video.json
3
2288
这个3好像是"server_port": 2288,上一行的数字!
作者:
t895
时间:
2016-06-18 10:46
回复
3#
Herowinter
这个把文件里面所有的数字都打印出来了
作者:
wjemail
时间:
2016-06-19 03:02
回复
6#
t895
命令中的/server/是用来处理指定行的,如果你的文件中有几行匹配,就会有问题了。可以考虑根据你的文件把匹配修改的更精确。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2