我在一个文件中有以下文本:value={VARIABLE_NAME_A}
。在这个文件中可能有20多个这样的VARIABLE_NAME_A, B, C, etc
。
我试图使用shell脚本(不是bash,因为它的alpine和我没有安装bash)使用grep
列出所有这些VARIABLE_NAME_A, B, C
到一个变量,然后把它们放在一个列表项中,然后在它们上面进行搜索。
然而,从我对正则表达式的理解来看,这种格式应该可以工作.. "{[A-Z]\w+}"
。但是grep "{[A-Z]\w+}" filename.txt
不会产生任何结果。
不知道我在这里做错了什么?
2条答案
按热度按时间flvtvl501#
为了便于移植,你应该使用sed而不是grep,例如使用任何POSIX sed:
字符串
上面的代码假设输入中每行只有一个
{VARIABLE}
。如果你的sed不符合POSIX,因为它不支持字符类,那么这可能对任何sed都足够了,这取决于你的语言环境和输入文件的其他内容:
型
hgc7kmma2#
使用上面的文章作为
file
,但在一个或两个其他示例周围添加大括号进行测试,引用模式中的元字符,grep '{[A-Z]\w\+}' file
返回行。如果您的版本支持
-o
* 和 *\w\+
,字符串
如果
-o
而不是\w
,型
或者
awk
,虽然我相信有比这更好的方法.型
或
perl
,这也应该是相当普遍的这些天...型
有了
sed
*,型
sed
解决方案会中断。型
一个特定于GNU的解决方案是
型
如果我没有搞砸任何事情,我认为这是一个更完整的解决方案,将与任何
sed
-型