найти и присвоить строку переменной в bash - PullRequest
0 голосов
/ 29 мая 2018

Как найти строку из файла, используя bash.

Я получил файл "version.txt", и файл имеет содержимое

version = "0.0.1-SNAPSHOT"

Нужна команда bash для извлечениязначение ключа версии динамически.

Ответы [ 4 ]

0 голосов
/ 29 мая 2018
var=$(awk '/version/ {print $3}' file.txt)

/ EXPR / <- Вы можете использовать выражение как регулярное выражение с awk.3 доллара, так как нас интересует третий столбец, вы также можете использовать этот код: </p>

var=$(awk '/version/ {print $(NF)}' file.txt)

NF в awk - это число полей текущей строки, в данном случае 3.

0 голосов
/ 29 мая 2018

awk -F '=' '{print $ 2}' version.txt

0 голосов
/ 29 мая 2018

Вы можете использовать одну из следующих команд и присвоить результат переменной:

ВХОД:

$ cat version.txt 
abc
version = "0.0.1-SNAPSHOT"
123

grep:

$ grep -oP '(?<=^version\s=\s")[^"]*' version.txt                                                                                
0.0.1-SNAPSHOT

perl:

$ perl -ne 'if(/^version/){s/^version\s*=\s*|"//g; print}' version.txt                                                           
0.0.1-SNAPSHOT

Есть много других способов достижения вашего результата (sed, awk, ...)

Пояснения:

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

2) Подход perl является более гибким (0,1 или более пробелов могут быть расположены вокруг одинакового символа), здесь принцип заключается в том, что вы определяете строку, начинающуюся с version, затем вы удаляете version = и двойные кавычки перед печатью результата.

0 голосов
/ 29 мая 2018
version=$(grep ^version version.txt | cut -d'"' -f2)
...