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

时间:2013-07-25 15:14:30

标签: 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”,“msgId5”]}; 但仍然需要确切的输出(需要删除最后2个特殊字符};这里)。

2 个答案:

答案 0 :(得分:1)

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

grep -o 'MId=\[[^]]\+\]'

sed中使用相同的正则表达式可以正常工作,只需删除之前和之后的任何内容:

sed -e 's/.*\(MId=\[[^]]\+\]\).*/\1/'

答案 1 :(得分:1)

这对我有用:

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