【发布时间】:2013-06-20 16:30:17
【问题描述】:
我正在尝试从文本文件中提取大括号之间的所有内容并将输出写入另一个文本文件。我能够构造一个正则表达式来匹配 {} 之间的所有内容并且它工作正常(我编写了一个简单的 java 程序来测试它)但我在 unix 中不是很强大,因此不知道如何在 unix 中使用这个正则表达式。
下面的正则表达式匹配 {} 之间的所有内容(也适用于 jedit)
\{([^}]+)\}
我尝试了下面的 sed 命令,
cat samplefile | sed -e 's/.*\{\([^}]+\)\}.*/\1/g'
我收到以下错误。
sed: -e expression #1, char 24: Invalid preceding regular expression
在我找到一个匹配 [] 之间所有内容的正则表达式之间,它工作得很好。不知道我哪里出错了。有人可以帮我解决我的正则表达式问题吗?
cat file |sed -e 's/.*\[\([^]]*\)\].*/\1/g'
编辑 1:
解决方案:
cat file | sed -e 's/.*{\([^}]\+\)}.*/\1/g' --> works
【问题讨论】: