如何首先提取引用的字符串?

时间:2013-02-07 12:22:06

标签: regex shell pattern-matching

我有一个包含以下值的文件: -

<property name="india" column="delhi" />
<property name="austrelia" column="sydney" />
<property name="uae" column="dubai" />

现在我想在第一个“”中提取值。 结果应该是: -

india
austrelia
uae

我正在使用shell而我的正则表达式是“(。*?)”。但它选择了两个“”值。我只想要第一个。 有人可以建议我正确的正则表达式。

2 个答案:

答案 0 :(得分:3)

试试这个:

sed -r 's/^[^"]+"([^"]*)".*/\1/' file

使用您的数据进行测试:

kent$  echo '<property name="india" column="delhi" />
<property name="austrelia" column="sydney" />
<property name="uae" column="dubai" />'|sed -r 's/^[^"]+"([^"]*)".*/\1/'
india
austrelia
uae

答案 1 :(得分:1)

$ awk -F\" '{print $2}' file

顺便说一下,shell可能不是解析XML的理想工具。