使用sed中的变量作为先前命令的输出

时间:2018-11-29 07:19:47

标签: awk sed grep

下面是我的'COMMAND'命令的输出。输出格式为FILE:LINENO:PATTERN。我想要 将下面的命令输出值用作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 :(得分:0)

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