Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式要从一行中修剪,请获取行中的数字_Regex_Bash_Unix_Grep - Fatal编程技术网

Regex 正则表达式要从一行中修剪,请获取行中的数字

Regex 正则表达式要从一行中修剪,请获取行中的数字,regex,bash,unix,grep,Regex,Bash,Unix,Grep,需要从unix系统从proc mem info获取总内存信息: 现在,此命令为我获得了正确的行: cat/proc/meminfo | grep“MemTotal” 但这返回了整行: MemTotal: 1024984 kB 我需要将这条线进一步修剪为: 1024984 kB 到目前为止,这是我使用的完整命令,但第二部分似乎不起作用: cat/proc/meminfo | grep“MemTotal”| grep-E-o“([0-9])” 我认为第二个grep至少会返回数字部分,但是

需要从unix系统从proc mem info获取总内存信息: 现在,此命令为我获得了正确的行:
cat/proc/meminfo | grep“MemTotal”
但这返回了整行:

MemTotal:      1024984 kB
我需要将这条线进一步修剪为:

1024984 kB

到目前为止,这是我使用的完整命令,但第二部分似乎不起作用:

cat/proc/meminfo | grep“MemTotal”| grep-E-o“([0-9])”

我认为第二个grep至少会返回数字部分,但是它根本不会返回任何内容

有人能帮我纠正这个吗?
谢谢。

奇怪,对我来说,它又回来了

8
0
8
4
9
0
4
这是因为
[0-9]
只匹配一个数字。您需要一个
+
来匹配至少一个。你也可以去掉括号,它们在这里没有用

grep MemTotal /proc/meminfo | grep -E -o '[0-9]+'

奇怪,对我来说,它又回来了

8
0
8
4
9
0
4
这是因为
[0-9]
只匹配一个数字。您需要一个
+
来匹配至少一个。你也可以去掉括号,它们在这里没有用

grep MemTotal /proc/meminfo | grep -E -o '[0-9]+'

awk
更适合这里,对于匹配
MemTotal
的所有行,打印第2列和第3列

$ grep 'MemTotal' /proc/meminfo
MemTotal:        1024984 kB
$ awk '/MemTotal/{print $2,$3}' /proc/meminfo
1024984 kB

对于
grep
,如果PCRE可用,请使用可变长度查找:

$ grep -oP 'MemTotal:\h+\K.*' /proc/meminfo
1024984 kB

awk
更适合这里,对于匹配
MemTotal
的所有行,打印第2列和第3列

$ grep 'MemTotal' /proc/meminfo
MemTotal:        1024984 kB
$ awk '/MemTotal/{print $2,$3}' /proc/meminfo
1024984 kB

对于
grep
,如果PCRE可用,请使用可变长度查找:

$ grep -oP 'MemTotal:\h+\K.*' /proc/meminfo
1024984 kB

(\d+++.*
你可以试试这个,但是这里有一个非常有用的工具来测试你的正则表达式
grep-Eo'[0-9]+'
获取数字部分
(\d+++.*
你可以试试这个,但是这里有一个非常有用的工具来测试你的正则表达式
grep-Eo'[0-9]+'
获取数字部分