我只喜欢出口 NAME 和 YEAR 下面的解决方案可以工作,但是应该有一种不创建第二个文件的方法 b.txt 请注意在 value
NAME
YEAR
b.txt
value
$ cat /tmp/ab.txt TYPE=Sedan NAME=VolksWagen golf YEAR=2014 CITY=NY OWNERS=3 CONDITION=Fair $ grep "NAME=\|YEAR=" /tmp/ab.txt > /tmp/b.txt $ source <(sed 's/=/="/; s/ *$/"/' /tmp/b.txt) $ echo $NAME VolksWagen golf $ echo $YEAR 2014 $ echo $OWNERS $
你已经有了自己问题的答案。你只需要把它们组合起来:
source <(egrep 'NAME=|YEAR=' /tmp/ab.txt | sed 's/=/="/; s/ *$/"/')
或:
source <(awk -F= '/NAME=|YEAR=/{print $1 "=" "\"" $2 "\""}' /tmp/ab.txt)
source <(awk -F= '/NAME=|YEAR=/{printf "%s=\"%s\"\n",$1,$2}' /tmp/ab.txt)