我有像这样的文件结构
var1=12.785, blah blah variable2=45.654 blih blah F=0.454
var1=852.785, blah blah var2=45.654 // blih blah FGT=8738
var1=12.785, blah blah DGSTE=4583; blih blah TEST=473.6984
var1=12.785, blah blah var2=45.654 blih blah var3=48834
我想要一个正则表达式,它只会给我'= sign
之后的数字12.785,45.654,0.454
852.785,45.654,8738
12.785,4583,473.6984
12.785,45.654,48834
(基本上变量=数字结构成立) 你可以帮忙吗? 我正在使用GNU grep和sed(但也有其他收费)
答案 0 :(得分:0)
这将为您的示例数据提供技巧:var\d=(\d+\.\d+)
第一个子组包含结果数字。
如果您的数据非常简单,您甚至可以使用以下\d+\.\d+
来简化此操作,var
并不关心{{1}}前缀,但它确实可以正常使用输入数据。
答案 1 :(得分:0)
从unix
开始使用perl one liner。
perl -lne 'print join(",", (m/=([\d.]+)/g));' input.txt
使用m/=([\d.]+)/g
,它会在=
之后提取所有数字。假设所有数字都是xx.yy
格式。否则,您必须使用边界检查将正则表达式[\d.]+
更改为\d+(\.\d+)?
。
答案 2 :(得分:0)
要查找以下所有数字=,您需要一个看起来像=(\d*\.?\d+)
的正则表达式。
您无法通过grep获得所需的内容,因为它始终返回整个匹配行。你必须使用sed。你可以找到一些有用的参考资料: