用于在文件中查找占位符的Bash脚本

时间:2015-07-21 09:47:03

标签: bash

我试图编写一个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

我尝试了很多选择但没有成功。

有人可以帮助我吗?

3 个答案:

答案 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上。