我正在使用 Linux 和 bash。 我有一个简单的文本文件如下:
VAR1=100
VAR2=5
VAR3=0
VAR4=99
我想用bash提取VAR2的值,即5。怎么做呢?
我正在使用 Linux 和 bash。 我有一个简单的文本文件如下:
VAR1=100
VAR2=5
VAR3=0
VAR4=99
sed -n 's/^VAR2=\(.*\)/\1/p' < vars.txt
`
echo VAR2=`sed -n 's/^VAR2=\(.*\)/\1/p' < txt`
source
或简单地使用.
读取和执行文件。这将适用于您的示例,因为变量值中没有空格。否则,您需要使用grep + cut或awk,如其他答案所述。. /path/to/your/file
echo $VAR2
source
文件将所有变量设置为文件中的值... - dawg给定:
$ echo "$txt"
VAR1=100
VAR2=5
VAR3=0
VAR4=99
$ echo "$txt" | awk -F= '/^VAR2/ { print $2 }'
5
或者使用grep和cut:
$ echo "$txt" | egrep '^VAR2=\d+' | cut -d = -f 2
5
VAR2=5
这一行将被使用。您需要将其写入文件,然后再对该文件进行源代码引用。$ echo "$txt" | grep '^VAR2' > tmp && source tmp && rm tmp
$ echo "$VAR2"
5
或者使用进程替换来消除tmp
文件。在这里,您可以使用grep
或awk
:
$ source <(awk '/^VAR2/{print}' <<< "$txt")
$ echo "$VAR2"
5
假设这是您的文本文件,命名为test.txt
VAR2 = 5
VAR3 = 0
VAR4 = 99
你可以使用以下命令:cat test.txt | grep 'VAR2' | awk '{printf $3}'
然后你会得到输出结果:5
这里,cat test.txt
命令会在终端中显示 test.txt 文件的内容,grep 'VAR2'
命令会列出包含 'VAR2' 的行,awk '{printf $3}'
命令会打印变量的值。
source file.txt
echo $VAR2
grep
和cut
- Barmarawk
,并将=
作为字段分隔符。 - Barmarsource simple_text_file; echo $VAR2
。 - Kenneysed -n 's/^VAR2=\([0-9]*\)$/\1/p' simple_text_file
。 - Quinn