我的文件包含这样的行

aaa bbb ccc {"eee": "ggg", "mmm": "sss"}
aaa1 bbb1 {"eee": "ggg"}
aaa2 bbb2 ccc2
aaa3 bbb3 ccc3 {"eee": "ggg", "mmm": "sss"}


我想从每行中提取{}之间的消息。如果{}之间没有消息,则返回空消息。

如何在bash中做到这一点?

最佳答案

试试awk-

$cat file
aaa bbb ccc {"eee": "ggg", "mmm": "sss"}
aaa1 bbb1 {"eee": "ggg"}
aaa2 bbb2 ccc2
aaa3 bbb3 ccc3 {"eee": "ggg", "mmm": "sss"}

$awk -F[{}]  '{print $2}' file

Output-
"eee": "ggg", "mmm": "sss"
"eee": "ggg"

"eee": "ggg", "mmm": "sss"


此命令将定界符设置为大括号。

10-08 15:29