-1

我是脚本新手。

目前我遇到了一个问题。

输入字符串:

hw=ABC host=*-0 vrt=se6w
hw=ABC host=*-1 vrt=se6w

所需输出:

hw=ABC host=SE-0 vrt=se6w
hw=ABC host=SE-1 vrt=se6w

这里 * 可以是任何值。

  • 表示该值是动态的。我们不知道会提前有什么。我只想替换用 SE 提交的主机中的任何内容。例如:host=xxxx-0 和 SE-0 和

yyyy-1 与 SE-1。即,“-1/0”之后的值应该保持不变......

4

4 回答 4

1
$ cat file
hw=ABC host=*-0 vrt=se6w
hw=ABC host=*-1 vrt=se6w

$ sed 's/\(host=\)[^-]*/\1SE/' file
hw=ABC host=SE-0 vrt=se6w
hw=ABC host=SE-1 vrt=se6w
于 2013-08-12T11:53:34.827 回答
0

sed是你的朋友!要替换CFPU-0ESPU-0SE-0您可以写:

# Create a testfile
sylvain@daal:/tmp$ cat << EOF > testfile
hw=ABC host=CFPU-0 vrt=se6w
hw=ABC host=ESPU-0 vrt=se6w
hw=ABC host=ESPU-1 vrt=se6w
hw=ABC host=XXXX-0 vrt=se6w
EOF

# Perform substitution using sed
sylvain@daal:/tmp$ sed 's/host=\(CFPU\|ESPU\)-0/host=SE-0/' < testfile
hw=ABC host=SE-0 vrt=se6w
hw=ABC host=SE-0 vrt=se6w
hw=ABC host=ESPU-1 vrt=se6w
hw=ABC host=XXXX-0 vrt=se6w
于 2013-08-12T11:59:34.637 回答
0

纯 awk 也可以解决问题:

awk -F'=| ' '{print $1"="$2" "$3"="( $4 =="CFPU-0"||$4 =="ESPU-0" ? "SE-0" : $4 )" "$5"="$6}' file

如果字符串存储为变量,则可以执行 echo 并通过管道传输上面的 awk 命令,如下所示:

echo $variable | awk -F'=| ' '{......}'
于 2013-08-12T12:18:49.577 回答
-1

使用 sed 输出您的字符串并根据您的要求替换模式,如下脚本:

x="hw=ABC host=*-0 vrt=se6w
hw=ABC host=*-1 vrt=se6w"
x=`echo $x | sed 's/\*-/SE-/g'`
echo "x : $x"
于 2013-08-12T12:04:04.313 回答