Нужна помощь в чтении переменной

На основе Как эмулировать подстановку процессов в Dash?(спасибо αғснιη ! ), с поправкой наdash:

( cmd1 | ( cmd2 | ( diff /dev/fd/3 /dev/fd/4 ) 4<&0 ) 3<&0 )

0
25.09.2020, 17:38
2 ответа

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

sed -n "s/hostip=\([^ ]*.*\)/\1/p" config.txt

Но если ваш config.txt содержит пробелы в объявлении, например hostip = 192.168.1.2, используйте:

sed -n "s/hostip *= *\([^ ]*.*\)/\1/p" config.txt

Наконец, чтобы упростить жизнь, создайте функцию или скрипт-оболочку:

get_value() { 
    sed -n "s/$1 *= *\([^ ]*.*\)/\1/p" $2
}

get_value hostip config.txt
# prints 192.168.1.2
get_value pname config.txt
# prints My Office

hostip=$(get_value hostip config.txt)
0
18.03.2021, 23:03

Использование Raku (, ранее известного как Perl6)

~$ raku -ne 'put $/ if m/ <?after  hostip\= > \" <([\d**1..3 \.]**3 \d**1..3)> \" /;' config1.txt
192.168.1.2

Флаги командной строки -neсообщают Раку, что нужно проверять строку ввода -по строке -. В приведенном выше коде используется положительное нулевое -утверждение ширины просмотра, записанное <?after … >. Регулярное выражение ищет совпадение из четырех наборов цифр, каждый из которых имеет длину от 1 -до -3 цифр, разделенных точкой. Идиома <( … )>говорит Raku отбрасывать каждое внешнее совпадение и загружать внутреннее совпадение в переменную соответствия $/, которая возвращается.

ХТН.

https://raku.org

0
18.03.2021, 23:03

Теги

Похожие вопросы