如果我有一个像“name”:“tempname”,“department”:“tempdept”这样的字符串,我想搜索“department”的值,即“tempdept”。所以如果“部门”存在,我只需要返回的值。搜索的字符串的长度可能很长。这可以使用 sed/awk,你能帮忙吗?
我尝试了以下方法,但它返回了整个字符串。我在这里寻找部门。
echo $data | sed 's/\(\"department\":\)\(.*\"\)/\2/'
一些简单的解决方案:
echo "$data" | tr , \\n | awk -F: '$1 ~ /^department$/{ print $2 }'
或者
echo "$data" | awk -F: '$1 ~ /^department$/{ print $2 }' RS=,
您的解决方案只需要稍作修改:
echo "$data" | tr , \\n | sed -n 's/"department":\(.*\)/\2/p'
或者
echo "$data" | tr , \\n | sed -n '/"department":/s///p'
看看这是否适合你:
sed -ne '/"department"/{s/^.*"department":"\([^"]*\).*/\1/;p;}'
例子:
echo '"name":"tempname","department":"tempdept"' | sed -ne '/"department"/{s/^.*"department":"\([^"]*\).*/\1/;p;}'
tempdept
如果您需要保留双引号,只需在替换期间将它们重新添加:
sed -ne '/"department"/{s/^.*"department":"\([^"]*\).*/"\1"/;p;}