我有一个下面一行的文件。
JAVA_OPTS="$JAVA_OPTS -/opt/linux/agent.jar -max=5000" http.proxyHost=172.0.0.128
我使用下面的命令追加proxyHost和它的值到行结束使用下面的命令工作良好,但我想从中间删除双引号,并将其添加到结束,请帮助我。
sed -i '' -e '/^#/!s/agent.jar.*/& http.proxyHost='"$PROXYHOST"'/' $_FILE
输出如下所示:
JAVA_OPTS="$JAVA_OPTS -/opt/linux/agent.jar -max=5000 http.proxyHost=172.0.0.128"
尝试如下:
sed 's/"$/ http.proxyHost=172.0.0.128"/' <<< 'JAVA_OPTS="$JAVA_OPTS -/opt/linux/agent.jar -max=5000"'
用额外的proxyhost数据加上结束双引号替换行末的双引号。
对于文件中的每一行,这个sed
单行将把"
的最后一个字符移到行尾。
sed 's/"([^"]*)$/1"/' file
如果您只想编辑以JAVA_OPTS="
开头的行,则使用
sed '/^JAVA_OPTS="/s/"([^"]*)$/1"/' file
或者,如果您想将$PROXYHOST
正确地附加到原始文件中以JAVA_OPTS=
开头的行:
sed '/^JAVA_OPTS="/s/"$/'" $PROXYHOST"'"/' file
如果变量PROXYHOST
的内容包含sed
的特殊字符(如/
和&
),则必须通过前置进行转义。
我会用
sed -E 's/(.*)"/1/; s/$/"/'
第一部分删除了最后一个引号,因为.*
是贪婪的。
然后在行尾加上双引号。
或perl -pe 's/.*K"//; s/$/"/'
,其工作方式相同