Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Unix中从一行grep值_Unix - Fatal编程技术网

如何在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/'