拆分sed / awk中的剩余字段

时间:2009-06-04 14:43:26

标签: sed awk

我有一句话:

MAVEN_OPTS=-XX:MaxPermSize=128m -Xms128m -Xmx768m

并希望将其转换为(在字段2-> n上添加引号):

export MAVEN_OPTS="-XX:MaxPermSize=128m -Xms128m -Xmx768m"

4 个答案:

答案 0 :(得分:0)

echo "MAVEN_OPTS=-XX:MaxPermSize=128m -Xms128m -Xmx768m" | sed 's/=/="/; s/$/"/'

答案 1 :(得分:0)

一些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 "\""}'

答案 2 :(得分:0)

另一个解决方案:

echo "MAVEN_OPTS=-XX:MaxPermSize=128m -Xms128m -Xmx768m" |
awk -F= 'BEGIN {OFS=FS} {$2="\"" $2; $NF=$NF "\""; print}'

答案 3 :(得分:0)

这是另一种方法:

$ 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)'