我需要使用sed
命令提取值;
我有一个文件,其中包含以下内容:
field="value"
结果必须是:value
答案 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 '"'