2016-02-09 5 views
0

Я использую Linux и bash. У меня есть простой текстовый файл, как показано ниже:извлечение значения переменной из текстового файла с помощью bash

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

Я хочу, чтобы извлечь с помощью Баш величина var2, то есть 5.

Как я могу это сделать?

+0

Используйте '' grep' и cut' – Barmar

+0

Или просто использовать '' awk' с = 'как поле расщепленной характера. – Barmar

+1

Или 'source simple_text_file; echo $ VAR2'. – Kenney

ответ

0

Предполагая, что файл называется vars.txt

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

Вы можете использовать значение в другом месте, как этого, используя одиночные обратные кавычки

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

Дано:

$ 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 и фильтровать строки, которые вы хотите использовать. В этом случае будет использоваться только линия VAR2=5. Вы должны написать, что в файл, а затем источник файл:

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

Самый простой способ может быть источником (.) файла. Это будет работать с вашим примером, потому что в значениях переменных нет пробелов. В противном случае вам нужно использовать grep + cut или awk, как указано в других ответах.

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

[править] Как заявил Dawg, это сделало бы другие переменные доступны в сценарии тоже, и, возможно, перезаписать существующие переменные.

+0

Возможно, ему не требуется значение других элементов. 'source' файл установит все переменные в значения в файле ... – dawg

0

Для файлов, как описано, вы можете просто указать файл как скрипт bash, который будет запускать его содержимое и обновлять среду рабочего пространства с ним. Например:

source file.txt 
echo $VAR2 
Смежные вопросы