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