Regex 正则表达式要从一行中修剪,请获取行中的数字
需要从unix系统从proc mem info获取总内存信息: 现在,此命令为我获得了正确的行: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至少会返回数字部分,但是
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]+'
获取数字部分