我想从文件中获取特定字符串之后的整数值并对所有整数进行排序。例如 - 我有一个包含数千行字符串权重的文件,
-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] 删除。
我来说两句