Sed命令从完整字符串中提取特定字符串

Sed命令从完整字符串中提取特定字符串,sed,Sed,我有一个包含很多字符串的文件,比如下面的输入。 需要提取以下输出并进一步处理 输入: History={ExecAt=[2013-05-03 03:00:20,2013-05-03 03:00:23,2013-05-03 03:00:26],MId=["msgId3","msgId4","msgId5"]}; 输出应为: MId=["msgId3","msgId4","msgId5"] 使用(sed的/^.*,MId=/MId/')命令,我得到了类似MId=[“msgId3”、“msgId4

我有一个包含很多字符串的文件,比如下面的输入。 需要提取以下输出并进一步处理

输入:

History={ExecAt=[2013-05-03 03:00:20,2013-05-03 03:00:23,2013-05-03 03:00:26],MId=["msgId3","msgId4","msgId5"]};
输出应为:

MId=["msgId3","msgId4","msgId5"]
使用(sed的/^.*,MId=/MId/')命令,我得到了类似MId=[“msgId3”、“msgId4”、“msgId5”]]的输出;
但是仍然需要精确的输出(需要删除最后2个特殊字符};此处)。

如果您的
grep
支持
-o
选项,您可以使用它而不是
sed

grep -o 'MId=\[[^]]\+\]'
sed
中使用相同的正则表达式很好,只需删除以下前后的任何内容:

sed -e 's/.*\(MId=\[[^]]\+\]\).*/\1/'
这对我很有用:

sed 's/.*\(MId=.*\)\}.*/\1/'