Bla*_*bbs 12 text-processing regular-expression
所以我有一条线:
ID: 54376
Run Code Online (Sandbox Code Playgroud)
你能帮我做一个只返回没有“ID:”的数字的正则表达式吗?
注意:此字符串位于文件中。
cuo*_*glm 20
尝试这个:
grep -oP '(?<=ID: )[0-9]+' file
Run Code Online (Sandbox Code Playgroud)
或者:
perl -nle 'print $1 if /ID:.*?(\d+)/' file
Run Code Online (Sandbox Code Playgroud)
有很多方法可以做到这一点。例如:
将 GNUgrep
与最近的 PCRE 一起使用并匹配以下数字ID:
:
grep -oP 'ID:\s*\K\d+' file
Run Code Online (Sandbox Code Playgroud)使用awk
并简单地打印所有以ID:
awk '/^ID:/{print $NF}' file
Run Code Online (Sandbox Code Playgroud)
这也将打印不是数字的字段,仅获取数字,并且仅在第二个字段中,使用
awk '($1=="ID:" && $2~/^[0-9]+$/){print $2}' file
Run Code Online (Sandbox Code Playgroud)将 GNU grep 与扩展正则表达式一起使用并解析两次:
grep -Eo '^ID: *[0-9]+' file | grep -o '[0-9]*'
Run Code Online (Sandbox Code Playgroud)使用egrep
with-o
或grep
with-Eo
选项仅获取匹配的段。使用[0-9]
正则表达式来获取数字:
grep -Eo [0-9]+ filename
Run Code Online (Sandbox Code Playgroud)