我有这行:
MAVEN_OPTS=-XX:MaxPermSize=128m -Xms128m -Xmx768m
并希望将其转换为(在字段 2->n 上添加引号):
export MAVEN_OPTS="-XX:MaxPermSize=128m -Xms128m -Xmx768m"
echo "MAVEN_OPTS=-XX:MaxPermSize=128m -Xms128m -Xmx768m" | sed 's/=/="/; s/$/"/'
一些 awk 的可能性(在 ubuntu 中测试)
echo "MAVEN_OPTS=-XX:MaxPermSize=128m -Xms128m -Xmx768m" | awk 'BEGIN{FS="MAVEN_OPTS="; OFS="MAVEN_OPTS=\""; ORS="\"\n"} {print $1,$2 }'
echo "MAVEN_OPTS=-XX:MaxPermSize=128m -Xms128m -Xmx768m" | awk 'BEGIN{FS="MAVEN_OPTS="; OFS="MAVEN_OPTS=\"";} {print $1,$2 "\""}'
另一个 awk 解决方案:
echo "MAVEN_OPTS=-XX:MaxPermSize=128m -Xms128m -Xmx768m" |
awk -F= 'BEGIN {OFS=FS} {$2="\"" $2; $NF=$NF "\""; print}'
这是另一种方法:
$ echo 'MAVEN_OPTS=-XX:MaxPermSize=128m -Xms128m -Xmx768m' |
awk 'match($0,/=.*/)&&$0="export "substr($0,1,RSTART-1)"="substr($0,RSTART+1)'
如果你有傻瓜:
$ echo 'MAVEN_OPTS=-XX:MaxPermSize=128m -Xms128m -Xmx768m' |
gawk '$0=gensub(/^(.*)=(.*)/,"\\1=\\2",1)'