给定包含
的纯文本文件FOO=foo
BAR=bar
BAZ=baz
我们如何使用密钥grep
获取值?
答案 0 :(得分:11)
看看背后:
$ grep -Po '(?<=^FOO=)\w*$' file
foo
我也喜欢awk
:
$ awk -v FS="FOO=" 'NF>1{print $2}' file
foo
甚至更好:
$ awk -F= -v key="FOO" '$1==key {print $2}' file
foo
使用sed
:
$ sed -n 's/^FOO=//p' file
foo
如果您对不包含任何奇怪值的文件有信心,或者使用Bash -ONLY,您可以获取文件并echo
所需的值:
$ (source file; echo "$FOO")
foo
答案 1 :(得分:2)
试试这个......
grep "^FOO=" file.txt | awk -F"=" '{ print $2 }'
在@fedorqui的帮助下
答案 2 :(得分:2)
grep "^FOO=" | cut -d"=" -f2
我更喜欢这个,因为它对我来说很容易记住。
说明:它只是抓住以FOO
开头的那条线(因此是^
)并将其与=
一起切成碎片然后获得第二块与-f2
。
答案 3 :(得分:0)
另一个主张:分裂工作
grep "FOO=" file.txt | sed -e 's/.*=//'
grep
将获取正确的行
sed
将移除(最后)等号的任何内容