如何从纯文本中获取键值存储中的值

pat*_*pat 3 unix linux shell grep

给定一个包含的纯文本文件

FOO=foo
BAR=bar
BAZ=baz
Run Code Online (Sandbox Code Playgroud)

我们如何grep使用密钥的价值?

fed*_*qui 13

看看背后:

$ grep -Po '(?<=^FOO=)\w*$' file
foo
Run Code Online (Sandbox Code Playgroud)

我也喜欢awk它:

$ awk -v FS="FOO=" 'NF>1{print $2}' file
foo
Run Code Online (Sandbox Code Playgroud)

甚至更好:

$ awk -F= -v key="FOO" '$1==key {print $2}' file
foo
Run Code Online (Sandbox Code Playgroud)

sed:

$ sed -n 's/^FOO=//p' file
foo
Run Code Online (Sandbox Code Playgroud)

或者即使使用Bash -ONLY,如果您对不包含任何奇怪值的文件有信心,您也可以获取文件和echo所需的值:

$ (source file; echo "$FOO")
foo
Run Code Online (Sandbox Code Playgroud)


Ina*_*mus 7

简单的方法:

grep "^FOO=" | cut -d"=" -f2-
Run Code Online (Sandbox Code Playgroud)

我更喜欢这个,因为它对我来说很容易记住。

解释:它只是简单地搜索以FOO(因此是^)开头的行并将其切割成=碎片,然后用 获得第二块-f2-

  • 请注意,如果值中包含“=”,则不会返回正确的值。例如:`echo 'FOO=bar=oops' | grep "^FOO="| cut -d"=" -f2` 错误地返回 `bar`。使用“f-2-”返回正确的值“bar=oops” (2认同)