![如何grep方括号内的数据?](https://linux22.com/image/155952/%E5%A6%82%E4%BD%95grep%E6%96%B9%E6%8B%AC%E5%8F%B7%E5%86%85%E7%9A%84%E6%95%B0%E6%8D%AE%EF%BC%9F.png)
我的 .log 文件中有以下类型的数据:
Cell[BoxData["0.8693473380926441`"]
Cell[BoxData["100.40266203596555`"]
Cell[BoxData["23.338724857049048`"]
Cell[BoxData["0.25720321805387686`"]
Cell[BoxData["66.85236878385265`"]
我只想 grep 数字,例如:
0.8693473380926441
100.40266203596555
23.338724857049048
0.25720321805387686
66.85236878385265
我试过了,grep -Po '\[.*?]'
但它只消除了一个括号。任何帮助将不胜感激。
答案1
awk
对此更好:
awk -F '["`]' '{print $2}' file
它将字段分隔符设置为"
波浪号或波形符,然后打印第二列/字段。
输出:
0.8693473380926441
100.40266203596555
23.338724857049048
0.25720321805387686
66.85236878385265
答案2
grep 找出你真正想要的东西。你想要的只是数字。您需要一些数字、一个句点和一些数字,所以:
egrep '[0-9]+\.[0-9]+' -o foo.txt
上面写着-o
“仅打印匹配的部分,而不是整行”。
答案3
我尝试使用下面提到的命令并且工作正常
sed 's/.*\["//g' filename| sed 's/`"\]//g'
输出
0.8693473380926441
100.40266203596555
23.338724857049048
0.25720321805387686
66.85236878385265
答案4
任何人都有机会回答主题中的问题而不是示例中的问题。我正在尝试使用 awk 来获取“[nnn]”中的数字,虽然awk -F'\[' '{print $2}' | awk -F'\]' '{print $1}’
有效,但它看起来确实很难看。我已经尝试过-F’[[]]’
,-F’[\[\]]’
但都不起作用