如何在Unix中从一行grep值
假设我有一行,如下所示:如何在Unix中从一行grep值,unix,Unix,假设我有一行,如下所示: <Instance name="cd" id="sa1"> <work id="23" permission="r"> 我想打印id值,其中id字段不是常量。如果不为您做提示,很难给出提示。但是假设你的真实需求比你描述的更复杂,那么也许在应用这个答案的过程中可以学到一些东西 Grep的功能还不足以完成您描述的工作,尽管在管道中以更大的“粒度”选择数据可能很有用。如果文件每行有一个标记,如示例所示,则可以使用grep仅过滤实例或工作标记 gr
<Instance name="cd" id="sa1">
<work id="23" permission="r">
我想打印id值,其中id字段不是常量。如果不为您做提示,很难给出提示。但是假设你的真实需求比你描述的更复杂,那么也许在应用这个答案的过程中可以学到一些东西 Grep的功能还不足以完成您描述的工作,尽管在管道中以更大的“粒度”选择数据可能很有用。如果文件每行有一个标记,如示例所示,则可以使用grep仅过滤
实例
或工作
标记
grep Instance | program to extract id val
或
要提取价值,你需要比grep更强大的东西。假设该值包含在双引号中,并且不包含嵌入的引号;如果没有类似的命名属性会混淆表达式,那么这个sed魔术应该可以做到这一点
sed 's/.*id="\([^"]*\)".*/\1/'
如果上述任何一个假设都不成立,那么表达式就必须更加复杂。您尝试了什么?你看过grep手册了吗?几天前你问了类似的问题。。从那以后你做了什么?和。这基本上表明你太懒了……对于其他类似的问题,你已经有了很好的答案。你应该接受一些。@ghostdog74,废话!你说得对。你的回答很好!他应该接受这一行动。
sed 's/.*id="\([^"]*\)".*/\1/'