如何grep方括号内的数据?

如何grep方括号内的数据?

我的 .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’[\[\]]’但都不起作用

相关内容