awk
來救援!
$ awk -F'[=/]' '/propertyOne/{$2="apple/"$2}
/propertyTwo/{$2=$2"/and/"$3}
/propertyThree/{$2=$2"/end"}
{print $1 "=" $2}' file
propertyOne=apple/1
propertyTwo=a/and/b
propertyThree=three/end
定義兩個字段分隔符來引用組件。根據您的規則設置新的第二個字段並進行打印。
注意顯然,這種方法是不會,如果你有/
或=
作爲內容的一部分工作。您可以將第一個和最後一個規則推廣到前置或附加到等式的值部分,但是第二種情況沒有辦法解決。
此外,爲了更好地控制規則,您可能需要對每種情況更改/../
至$1=="..."
。
這是另一種選擇,
$ awk -F= -v OFS='=' '$1=="propertyOne"{$2="apple/"$2}
$1=="propertyTwo"{sub(/\//,"/and/")}
$1=="propertyThree"{$NF=$NF"/end"}1' file
測試與邊緣例
$ awk -F= ... << EOF
> propertyOne=a==b
> propertyTwo=a==b/c==d
> propertyThree=x/y==z
> Not_propertyOne=no change
> EOF
產量
propertyOne=apple/a==b
propertyTwo=a==b/and/c==d
propertyThree=x/y==z/end
Not_propertyOne=no change
屬性一將在當前變量前添加一個字符串,屬性二將在兩者之間添加一些內容,變量三將在末尾添加一些內容。它們將用斜線「/」分隔。我會更新問題的清晰度 – Led
如果所有3個替換都不同,那麼您將需要3個替換,並且不能避免硬編碼屬性名稱。 – anubhava
這是指出,有關如何獲得屬性值的任何想法,以減少硬編碼錯誤? – Led