RegEx - 如何使用 grep 提取第二个匹配项

奥特曼

如何在 ubuntu 中使用 grep 命令提取本文中的第二个数字。

文件名:Results.html?owner=12345

14219,98.2,31-s,19225
39219,92.7,31-s,29225

所需的输出:

12345:98.2
12345:92.7

谢谢

钢刀

使用 GNU grep,您可以切换到 PCRE 模式,您可以在其中使用环视来匹配由逗号包围的数字:

$ grep -HPo '(?<=,)[0-9.]*(?=,)' file
file:98.2
file:92.7

OTOH 如果您的数据以逗号分隔,则更好的选择可能是 Awk:

$ awk -F, '{print FILENAME ":" $2}' file
file:98.2
file:92.7

或等效于 perl perl -F, -nlE '{say "$ARGV:$F[1]"}' file


要在 awk 中拆分文件名,您可以使用

$ awk -F, '{split(FILENAME,a,/=/); print a[2] ":" $2}' Results.html\?owner\=12345 
12345:98.2
12345:92.7

或者(稍微高效一点)如果你有 GNU Awk

gawk -F, 'BEGINFILE{split(FILENAME,a,/=/)} {print a[2] ":" $2}' Results.html\?owner\=12345

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

grep regex每行的第二个单词并替换

sed:如何删除文件中的第二个匹配项

RegEx-如何选择第二个逗号及其后的所有内容

使用Regex,如何检查倒数第二个字符是否为奇数

为什么第二个正则表达式“ grep(/ keyword /,@ array”)在Perl中不能使用?

如果我只想在第二个斜杠后提取第二个斜杠,如何在大查询中使用regex_extract?

grep regex-如何匹配相同的字符对?

ReGex,如何查找字符串的第二个实例

PHP Regex获得第二个分组匹配

如何对上一个grep返回的文件执行第二个grep?

在第二个命令中使用`grep`的输出作为变量

如何在pattern1和pattern2的第二个匹配项之间打印行?

如何使用grep从第一个双引号到第二个双引号提取具有多个(“)的字符串的内容

如何使用grep和regex匹配特定长度的单词?

RegEx使用grep匹配第二列和第五列中的字符串

如何从路径中提取第二个元素?

如何使用awk或grep在第二个关键字的第一个匹配项之前搜索第二个关键字的第一个匹配项?

使用可能的第二个逗号RegEx匹配,空格和[Az]

如何对任何两个匹配的数字或第一个数字比第二个数字小的字符串进行grep?

如何使用grep通过Regex提取字符串?

使用 grep 或 awk 获取字符串的第二个值

如何在不替换整行的情况下替换第二个匹配项

如果没有找到所有匹配项,如何使这个循环只写第二个

使用正则表达式提取找到第二个匹配项

使用Javascript + Regex获取字符串中的第二个数字?

我无法使用 ansible lineinfile regex 与两个字段和美元符号开头的第二个字段进行匹配

SED、GREP、AWK、regex 不显示两个模式之间的内容,直到匹配第二个模式的结尾

在 SQL Google BigQuery 中使用 REGEX_EXTRACT 提取第二个斜杠和 .html 之间的数字和字母字符串

如何在正则表达式中提供第二个匹配项并进行完整验证?