1

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

输入:

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 's/^.*,MId=/MId/') 命令我得到的输出类似于 MId=["msgId3","msgId4","msgId5"]}; 但仍然想要确切的输出(需要删除最后 2 个特殊字符 }; 在这里)。

4

2 回答 2

1

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

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

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

sed -e 's/.*\(MId=\[[^]]\+\]\).*/\1/'
于 2013-07-25T15:21:48.870 回答
1

这对我有用:

sed 's/.*\(MId=.*\)\}.*/\1/'
于 2013-07-25T15:23:47.613 回答