[英]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.