我试图编写一个bash脚本来查找文件中的所有占位符。
例如
我有以下文件:
<property name="sdfasdf" value="$ABC.D"></property>
<property name="sadf" value="$DFG.F.G"></property>
<property name="sadf" value="hello"></property>
<property name="ddd" value="$HJK"></property
我希望得到这些:
$ABC.D
$DFG.F.G
$HJK
我尝试了很多选择但没有成功。
有人可以帮助我吗?
答案 0 :(得分:2)
可以grep这些值和占位符,并进一步grep获取符号名称。
示例强>
$ grep -o 'value="$.\+"' input.txt | grep -oE '\$(\w|\.)+'
$ABC.D
$DFG.F.G
$HJK
注意:假设每行只有一个占位符值
<强>详情
- o flag仅将匹配项打印到模式
- 扩展正则表达式的E标志,用于匹配单词或。
答案 1 :(得分:2)
您可以使用 sed :
sed -n 's/.*value="\($[\.a-zA-Z]*\)".*/\1/p' ./input.txt
其中 input.txt 文件包含您的文字。
这里我们使用替换组仅打印实际匹配(而不是整个匹配行)。
答案 2 :(得分:1)
sed -nr 's%(\$[A-Za-z][A-Za-z.]*)%\n\1\n%gp' test | grep '^\$[A-Za-z][A-Za-z.]*'
这是查找占位符的通用方法,与每行是否只有一个占位符以及是否存在&#34; value =&#34;它附近的背景。所有占位符都将打印在STDOUT上。