下面是我的'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是另一个命令输出
答案 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