-1

私はスクリプトを書くのが初めてです。

現在、私は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 with SE-0 and

yyyy-1 と SE-1。つまり、「-1/0」の後の値は同じままにする必要があります....

4

4 に答える 4

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
于 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

文字列が変数として格納されている場合は、次のように上記の awk コマンドをエコーし​​てパイプすることができます。

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