Regex 正则表达式不匹配(0/\d+;)
如何匹配除Regex 正则表达式不匹配(0/\d+;),regex,Regex,如何匹配除(0/\d+)以外的任何内容: 在本例中,我希望匹配所有内容,但: 0/1 0/111 0/24 最终目标是清理文本文件并在其中只保留以下字符串: 0/1 0/111 0/24 您可以使用sed: sed 's/.*\(0\/[0-9]\+\).*/\1/g' input.txt 说明: 上面的命令将一个0后跟一个正斜杠和一个或多个数字匹配到捕获组1。比赛前后的一切都被扔掉了g表示sed应用替换的次数与模式匹配的次数相同,而不仅仅是一次 输出: 0/1 0/111 0/24
(0/\d+)
以外的任何内容:
在本例中,我希望匹配所有内容,但:
0/1
0/111
0/24
最终目标是清理文本文件并在其中只保留以下字符串:
0/1
0/111
0/24
您可以使用
sed
:
sed 's/.*\(0\/[0-9]\+\).*/\1/g' input.txt
说明:
上面的命令将一个0
后跟一个正斜杠和一个或多个数字匹配到捕获组1
。比赛前后的一切都被扔掉了g
表示sed
应用替换的次数与模式匹配的次数相同,而不仅仅是一次
输出:
0/1
0/111
0/24
尝试此操作。替换为$1
或\1
。请参阅演示。使用多行模式
您不需要删除任何内容,只需匹配即可
grep -o '0/[0-9]\+' file
例如:
$ echo 'fff0/111fff0/111fff' | grep -o '0/[0-9]\+'
0/111
0/111
不清楚您想要实现什么。我需要完全相反的结果。是否可以修改此选项,使每行有多个匹配项并忽略空格,例如:
fff0/111fff0/111fff
grep -o '0/[0-9]\+' file
$ echo 'fff0/111fff0/111fff' | grep -o '0/[0-9]\+'
0/111
0/111