我的文件包含这样的行
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"
此命令将定界符设置为大括号。