簡體   English   中英

使用bash從文本文件中提取變量的值

[英]extracting a variable's value from text file using bash

我正在使用 Linux 和 bash。 我有一個簡單的文本文件,如下所示:

VAR1=100
VAR2=5
VAR3=0
VAR4=99

我想通過 bash 提取 VAR2 的值,即 5。

我怎么能那樣做?

最簡單的方法可能是使用source或簡單的. 讀取並執行文件。 這適用於您的示例,因為變量值中沒有空格。 否則,您需要使用 grep + cut 或 awk,如其他答案中所述。

. /path/to/your/file
echo $VAR2

[編輯] 如 dawg 所述,這將使腳本中的其他變量也可用,並可能覆蓋現有變量。

假設文件名為 vars.txt

sed -n 's/^VAR2=\(.*\)/\1/p' < vars.txt

您可以使用單反引號在其他地方使用該值

echo VAR2=`sed -n 's/^VAR2=\(.*\)/\1/p' < txt`

鑒於:

$ echo "$txt"
VAR1=100
VAR2=5
VAR3=0
VAR4=99

您可以使用 awk:

$ echo "$txt" | awk -F= '/^VAR2/ { print $2 }'
5

或 grep 並剪切:

$ echo "$txt"  | egrep '^VAR2=\d+' | cut -d = -f 2
5

在 Bash 上,您可以使用source將這些賦值的值插入到當前 shell 中,並過濾您希望使用的行。 在這種情況下,將僅使用行VAR2=5 您需要將其寫入文件,然后獲取該文件:

$ echo "$txt"  | grep '^VAR2' > tmp && source tmp && rm tmp
$ echo $VAR2
5

對於所描述的文件,您可以將文件作為 bash 腳本源,該腳本將運行它的內容並使用它更新您的工作區環境。 例如:

source file.txt
echo $VAR2

假設這是您的 txt 文件,名為 test.txt

VAR2 = 5
VAR3 = 0
VAR4 = 99

你可以cat test.txt | grep 'VAR2' | awk '{printf $3}' cat test.txt | grep 'VAR2' | awk '{printf $3}'

然后你的輸出將是: 5

在這里, cat test.txt將在您的終端中顯示cat test.txt的內容, grep 'VAR2'將列出包含 'VAR2' 的行, awk '{printf $3}'將打印變量的值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM