代码之家  ›  专栏  ›  技术社区  ›  rodee

如何从key=value格式的文件中只获取选定行?

  •  0
  • rodee  · 技术社区  · 4 年前

    我只喜欢出口 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
    
    $ 
    
    1 回复  |  直到 4 年前
        1
  •  1
  •   accdias    4 年前

    你已经有了自己问题的答案。你只需要把它们组合起来:

    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)