如何从Unix中的一行grep值

时间:2011-08-25 05:55:22

标签: unix

假设我有一行如下:

<Instance name="cd" id="sa1">
<work id="23" permission="r">

我想打印id值,其中id字段不是常量。

1 个答案:

答案 0 :(得分:1)

如果没有为你做,很难给出提示。但是假设你的真实需求比你描述的更多,那么在应用这个答案时可能会发生一些学习。

Grep并不足以完成您描述的工作,尽管在pipline中选择较大“粒度”的数据可能很有用。如果您的文件每行显示一个标记,则可以使用grep仅过滤Instancework标记。

grep Instance | program to extract id val

grep work| program to extract id val

要提取值,您需要比grep更强大的东西。假设该值用双引号括起来并且不包含嵌入的引号;并且没有类似命名的属性可以混淆表达式,这个sed魔法应该可以解决问题。

sed 's/.*id="\([^"]*\)".*/\1/'

如果上述假设中的任何一个不成立,则表达式必须更复杂。