Sed选择参数值

时间:2014-04-16 15:01:34

标签: sed

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

field="value"

结果必须是:value

3 个答案:

答案 0 :(得分:3)

#!/bin/sh                                                                                                                                    
sed -n 's/field="\(.*\)"/\1/p'

这会查找具有field =

的行

如果找到它们,它会删除除值之外的所有内容,并打印该值。 否则,它什么都不打印。

答案 1 :(得分:0)

仅提供awk替代方案,因为awk通常是基于 field 的处理的最佳选择。

您的具体要求尚不清楚,但我在此做出以下假设:

  • 字段名称是唯一的
  • =周围没有空格,所有值均为" - 附带

以下内容允许您通过-v fname=...选项传入字段名称,并返回该字段的值不加引号;样本输入通过here-document提供。

awk -F\" -v fname='field' '$1 == (fname "=") { print $2; exit }' <<'EOF'
key="largo"
field="value"
id="fake"
EOF

答案 2 :(得分:0)

或者您可以使用awk查找“field”,使用'='拆分字段,然后使用tr删除额外的引号

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