迷失为什么添加另一个,在匹配模式中,它无法匹配任何东西?我想要实现的是在每个记录中提取Foo的值,即123,234和345。
grep -o $"Foo*" grepdebugtest.txt
Foo
Foo
Foo
grep -o $"Foo*," grepdebugtest.txt
(match nothing)
cat grepdebugtest.txt
{"Foo":123,"Goo":456}{"Foo":234,"Goo":567}{"Foo":345,"Goo":678}
提前谢谢,
林
答案 0 :(得分:1)
grep中的*
运算符与shell中使用的globbing运算符不同。
在grep中Foo*,
表示前一个字符重复零次或多次。您的模式Foo,
与Foooooo,
Fo,
甚至Foo":123,
匹配,但从不.*
。
要获得shell globbing运算符的等价物,必须在grep中使用.
。意味着零个或多个重复的任何字符({"Foo":123,"Goo":456}{"Foo":234,"Goo":567}{"Foo":345,
是任何字符的运算符)
注意,采用这种方法很可能你仍然不匹配,你正在寻找什么,因为grep会匹配贪婪并将Foo.*
作为Foo[^,]*,
的匹配。
您可能希望绕过与$
等匹配的问题。
另请注意,如果它不是拼写错误,则命令行中的grep -o "Foo*" grepdebugtest.txt
无用且命令与<script type="text/javascript">
function doGet(){
$.get('lastactivity.php');
}
$(document).ready(function(){
var refreshId = setInterval(doGet,10000);
});
</script>
答案 1 :(得分:1)
在JSON数据上使用JSON解析器:
jq '.Foo' <<END
{"Foo":123,"Goo":456}{"Foo":234,"Goo":567}{"Foo":345,"Goo":678}
END
123
234
345