Sed选择参数的值

Sed选择参数的值,sed,Sed,我需要使用sed命令提取值; 我有一个文件,其中包含如下内容: field="value" 结果需要是:valuetry #!/bin/sh sed -n 's/field="\(.*\)"/\1/p' 这将查找具有字段的行= 如果

我需要使用
sed
命令提取值; 我有一个文件,其中包含如下内容:

field="value"
结果需要是:
value

try

#!/bin/sh                                                                                                                                    
sed -n 's/field="\(.*\)"/\1/p'
这将查找具有字段的行=

如果找到它们,它将删除除值之外的所有内容,并打印值。 否则,它不会打印任何内容。

试试看

#!/bin/sh                                                                                                                                    
sed -n 's/field="\(.*\)"/\1/p'
这将查找具有字段的行=

如果找到它们,它将删除除值之外的所有内容,并打印值。
否则,它不会打印任何内容。

只是为了提供一个
awk
备选方案,因为在基于字段的处理中
awk
通常是更好的选择

您的确切要求尚不清楚,但我在这里做出以下假设:

  • 字段名是唯一的
  • =
    周围没有空格,所有值都是
    -封闭的
下面允许您通过
-v fname=…
选项传入字段名,并返回该字段的值,不带引号;示例输入通过here文档提供


awk-F\”-v fname='field'$1==(fname“=”{print$2;exit}'只是为了提供一个
awk
替代方案,因为在基于字段的处理中,
awk
通常是更好的选择

您的确切要求尚不清楚,但我在这里做出以下假设:

  • 字段名是唯一的
  • =
    周围没有空格,所有值都是
    -封闭的
下面允许您通过
-v fname=…
选项传入字段名,并返回该字段的值,不带引号;示例输入通过here文档提供


awk-F\”-v fname='field'$1==(fname'=){print$2;exit}'或者您可以使用awk查找“field”,使用'='将字段拆分,然后使用tr删除额外的引号

awk -F= '/field/ {print $2}' <file | tr -d '"'

awk-F='/field/{print$2}'或者您可以使用awk查找“field”,使用“=”将字段拆分,然后使用tr删除额外的引号

awk -F= '/field/ {print $2}' <file | tr -d '"'

awk-F='/field/{print$2}'欢迎使用堆栈溢出。请看这一页。一般来说,我们更愿意帮助那些诚实地尝试解决问题的人,以及那些通过展示他们的最佳尝试来证明这一点的人。你的问题不准确。您要从中提取的文件是一行还是多行?表单的所有行是否都是
field=“value”
?您需要查找特定字段的值,还是所有字段的所有值?如果有两行具有相同的字段名-一个或两个输出,该怎么办?一切都是可行的;它们是相当直接的正则表达式应用程序。不是sed,但是如果(/field=\”([^\“]*)\”/,您可以尝试使用这个
perl-lne'print$1“
欢迎使用Stack Overflow。请阅读此页。一般来说,我们更愿意帮助那些诚实尝试解决问题的人,以及那些通过展示他们的最佳尝试来证明这一点的人。您的问题不精确。您要提取的文件是一行还是多行?表单的所有行都是
字段=”值“
?是否需要查找特定字段的值,或所有字段的所有值?如果有两行具有相同的字段名称-一个或两个输出,该怎么办?所有这些都是可以实现的;它们是正则表达式的相当直接的应用程序。不是sed,但如果(/field=\”([^\“]*)\,您可以尝试使用此
perl-lne'打印$1)“
由于他有一个文件,建议他对该文件进行分类并将其传送给sed以改进答案。。。干杯。将上面的文件另存为“prog”并像使用./prog一样使用,因为他有一个文件,建议他对该文件进行cat并将其传送到sed以改进答案。。。干杯。将上面的文件保存为“prog”,并像使用/prog一样使用它