Разделить оставшиеся поля в sed / awk - PullRequest
1 голос
/ 04 июня 2009

У меня есть строка:

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

и хотите преобразовать его в (добавить кавычки в поле 2-> n):

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

Ответы [ 4 ]

0 голосов
/ 05 июня 2009

Это другой подход:

$ 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)'
0 голосов
/ 04 июня 2009

некоторые возможности 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 "\""}'
0 голосов
/ 04 июня 2009

Другое решение awk:

echo "MAVEN_OPTS=-XX:MaxPermSize=128m -Xms128m -Xmx768m" |
awk -F= 'BEGIN {OFS=FS} {$2="\"" $2; $NF=$NF "\""; print}'
0 голосов
/ 04 июня 2009
echo "MAVEN_OPTS=-XX:MaxPermSize=128m -Xms128m -Xmx768m" | sed 's/=/="/; s/$/"/'
...