Shell - Получить строку в файле между символами - PullRequest
1 голос
/ 22 апреля 2020

Мне нужно получить значение из переменной в файле: это содержимое файла

variable1=100    ;    value1 
variable2=200    ;    value2 
variable3=300    ;    value3 
variableN=400    ;    valueN 

Я хочу сохранить переменную 3 в другой переменной с помощью сценария оболочки, между 300 и ' ;» может быть переменное количество пробелов.

Вот мой код:

awk -F "=" '/variable3/ {print $2}' /opt/myFile.ini

это вывод:

300                             ;    value3

Как я могу получить только "300"? Лучше использовать вырезать или тр?

Спасибо

Ответы [ 4 ]

1 голос
/ 22 апреля 2020
$ awk -F'[=;[:space:]]+' '$1=="variable3"{print $2}' file
300
0 голосов
/ 22 апреля 2020

с использованием sed

sed -nE /variable3/'s#.*(=.*;).*#\1#g'p  < /opt/myFile.ini |   tr -d ' =;'

Демо

$cat file1.txt
variable1=100    ;    value1
variable2=200    ;    value2
variable3=300    ;    value3
variableN=400    ;    valueN
$sed -nE /variable3/'s#.*(=.*;).*#\1#g'p  <file1.txt |   tr -d ' =;'
300
$


0 голосов
/ 22 апреля 2020

Решено с этим:

awk -F "=" '/variable3/ {print $2}' /opt/myFile.ini | cut -d ";" -f 1 | tr -d "\n\r\t"
0 голосов
/ 22 апреля 2020

Не могли бы вы попробовать следующее.

awk -F'=| ' '/variable3/ && $2==300{print $2}' Input_file

Чтобы сохранить его в переменной оболочки, используйте:

var=$(awk -F'=| ' '/variable3/ && $2==300{print $2}' Input_file)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...