从文件中查找字符串后的整数值

asad_nitp

我想从文件中获取特定字符串之后的整数值并对所有整数进行排序。例如 - 我有一个包含数千行字符串权重的文件,

-weight 100
-weight 200
-weight 20

我想按排序顺序获取所有整数值。

大学教师

如果您正在搜索该行最后一个最长的数字字符串,您可以使用grep

$ grep -oP '\d+\s*$' file 
100
200
20

-o讲述grep仅打印该行的匹配部分和-P使Perl兼容的正则表达式。PCRE 让我们\d+用于“一个或多个数字”和\s*“0 个或多个空白字符”。因此,总的来说,该命令将打印在该行末尾找到的最长的一段数字。

如果您需要对它们进行排序,只需通过sort

$ grep -oP '\d+\s*$' file | sort -n
20
100
200

相反,如果您需要使用特定字符串来锚定您的模式,请使用:

$ grep -oP -- '-weight\s+\K\d+' file | sort -n
20
100
200

\K通知grep不包含任何匹配了这一点,所以上面的命令只在后打印数字的最长的一段时间-weight,为0或多个空格。

请注意,如果您还想包含负数或小数,则需要:

grep -oP -- '-weight\s+\K[0-9,-]+' file | sort -n

例如:

$ cat file 
-weight 100
-weight 200
-weight 20
-weight -29
-weight -32.4

$ grep -oP -- '-weight\s+\K[0-9,-]+' file | sort -n
-32
-29
20
100
200

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章