gpt4 book ai didi

regex - 使用 grep 仅显示匹配的字符串

转载 作者:行者123 更新时间:2023-11-29 09:21:27 25 4
gpt4 key购买 nike

我有一个我想要匹配的文件,如下所示:

...
new VideoInfo(6, VideoType.Flash, 270, false, AudioType.Mp3, 64, AdaptiveType.None),
new VideoInfo(13, VideoType.Mobile, 0, false, AudioType.Aac, 0, AdaptiveType.None),
new VideoInfo(17, VideoType.Mobile, 144, false, AudioType.Aac, 24, AdaptiveType.None),
... [a few hundred more entries like these]

我有以下正则表达式模式来匹配第一个数字:

grep "new VideoInfo(.*," VideoInfo.cs

问题是,grep 会发出匹配的整行,而不仅仅是 6 13 17 ...

如何让它只回显匹配的结果?


编辑:我在每个 new VideoInfo ... 行前都有尾随空格。

最佳答案

使用grep

如果你的 grep 支持 -P perl 样式正则表达式的选项:

$ grep -oP '(?<=new VideoInfo\()[^,]*' file
6
13
17

(?<=pattern)是回顾。因此,以上匹配正则表达式 [^,]*但前提是该正则表达式前面有 new VideoInfo\( .

使用 sed

sed 非常适合这个问题:

$ sed -nr 's/[[:space:]]*new VideoInfo\(([^,]*),.*/\1/p' file
6
13
17

使用庆典

$ re='new VideoInfo\(([^,]*)'
$ while read -r line; do [[ $line =~ $re ]] && echo "${BASH_REMATCH[1]}"; done< file
6
13
17

关于regex - 使用 grep 仅显示匹配的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31306382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com