我是脚本新手。
目前我遇到了一个问题。
输入字符串:
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
这里*可以是任何值。
yyyy-1与SE-1。即,“-1/0”之后的值应保持不变....
答案 0 :(得分: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
答案 1 :(得分:0)
sed
是你的朋友!要按CFPU-0
替换ESPU-0
或SE-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
答案 2 :(得分:0)
Pure awk也会做到这一点:
awk -F'=| ' '{print $1"="$2" "$3"="( $4 =="CFPU-0"||$4 =="ESPU-0" ? "SE-0" : $4 )" "$5"="$6}' file
如果字符串存储为变量,则可以执行回显并输出上面的awk命令,如下所示:
echo $variable | awk -F'=| ' '{......}'
答案 3 :(得分:-1)
使用sed输出echo你的字符串并根据你的要求替换模式,如下面的脚本:
x="hw=ABC host=*-0 vrt=se6w
hw=ABC host=*-1 vrt=se6w"
x=`echo $x | sed 's/\*-/SE-/g'`
echo "x : $x"