Использование переменной в sed в качестве вывода предыдущей команды - PullRequest
0 голосов
/ 29 ноября 2018

Ниже приведен вывод моей команды 'КОМАНДА'. Формат вывода: ФАЙЛ: ЛИНЕНО: ШАБЛОН.Я хочу взять приведенные ниже выходные значения команды в переменных diff и использовать их в команде «sed», упомянутой внизу.

<COMMAND> 
./core.pkglist:16:package linux-release     6Server     9.0.3
./core.pkglist:18:package release-server   6Server     6.9.0.4.0.1.el6
./core.pkglist:32:package upstart                 0.6.5       16.el6
./core.pkglist:33:package libnih                  1.0.1       7.el6

Я хочу заменить ее командой sed с входными данными из выходных данных вышекоманда типа:

sed "$var1 s/$var2/$c' $var3

, которая помогает мне выполнить практически следующую команду:

sed '16s/9.0.3/$c/' core.pkglist

1) Значение 16 выше должно быть получено из переменной типа:

var1=$(COMMAND |awk -F':' '{print $2}')

2) 9.0.3 должен исходить из переменной.

var2=$(COMMAND |awk -F '{print $4}')

3) core.pkglist должен исходить из переменной.

var3=$(COMMAND |awk -F '{print $1}')

4) $ c - другой вывод команды

1 Ответ

0 голосов
/ 29 ноября 2018
v3=$(echo Hello world); # Stupid examples of variables set from output commands
v1=$(wc -l <<< $v3);
v2=$(awk '{print $1}' <<< $v3);
c=$(echo Good morning); 
sed "${v1}s/$v2/$c/" <<< $v3 # Use double quotes instead of singles
# echo $v3 |  sed "${v1}s/$v2/$c/" works as well

Возвращает:

Good morning world
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...