如何删除两行之间的空格,使其成为一个,并使用shell脚本删除



我想从下面添加的文件中删除下面的部分。

  1. 无法从文件

    中删除credentials.admin.adapters此属性
  2. 删除其他产权在同一条直线。

  3. 如何在同一行< >字符之间添加内容

    <!--<UndefineProperty name="credentials.admin.adapters"/>-->
    <!--<AddToProperty name="credentials.admin.adapters"
    value="com.Ldap^cn=Manager^encrypted.com.Ldap.cn=admin"/>-->
    <Property name="credentials.admin.adapters" overridable="true"
    targetFile="Credentials.txt"
    value="com.Ldap^id=proxy"/>
    <!--<UndefineProperty name="credentials.admin.adapters"/>
    <AddToProperty name="credentials.admin.adapters"
    value="com.Ldap^cn=admin^encrypted.com.Ldap.cn=admin"/> -->
    

newconf.txt

<!--<UndefineProperty name="credentials.admin.adapters"/>-->
<!--<AddToProperty name="credentials.admin.adapters"
value="com.Ldap^cn=Manager^encrypted.com.Ldap.cn=admin"/>-->
<Property name="credentials.admin.adapters" overridable="true"
targetFile="Credentials.txt"
value="com.Ldap^id=proxy"/>
<Property name="pom.dbUser" overridable="true" targetFile="db.properties"
value="NM"/>
<Property name="pom.jdbc.host" overridable="true" targetFile="db.properties"
value="0038.rds.amazonaws.com"/>
<Property name="pom.dbPassword" overridable="true" targetFile="db.properties"
value="encrypted.pom.dbPassword"/>
<Property name="pom.serviceName" overridable="true" targetFile="db.properties"
value="rds.amazonaws.com:10:0038"/>
<Property name="pom.jdbc.service" overridable="true" targetFile="db.properties"
value="0038"/>
<Property name="pom.jdbc.port" overridable="true" targetFile="db.properties"
value="10"/>
<ConfigurationRef xlink:href="utilities/configurator.xconf"/>
<ConfigurationRef xlink:href="owl.xconf"/>
<ConfigurationRef xlink:href="ser.xconf"/>
<!--<UndefineProperty name="credentials.admin.adapters"/>
<AddToProperty name="credentials.admin.adapters"
value="com.Ldap^cn=admin^encrypted.com.Ldap.cn=admin"/> --><Property 
name="com.distproc.credential" overridable="true"
targetFile="distproc.properties"
value=""/>
</Configuration>

I tried below

sed -i '/value=/N; s/ns*/ /g' newconf.txt
sed -i "/credentials.admin.adapters/d" newconf.txt

但是上面的代码也删除了others属性。

我想要下面的输出:

<Property name="pom.dbUser" overridable="true" targetFile="db.properties" value="NM"/>
<Property name="pom.jdbc.host" overridable="true" targetFile="db.properties" value="0038.rds.amazonaws.com"/>
<Property name="pom.dbPassword" overridable="true" targetFile="db.properties" value="encrypted.pom.dbPassword"/>
<Property name="pom.serviceName" overridable="true" targetFile="db.properties" value="rds.amazonaws.com:10:0038"/>
<Property name="pom.jdbc.service" overridable="true" targetFile="db.properties" value="0038"/>
<Property name="pom.jdbc.port" overridable="true" targetFile="db.properties" value="10"/>
<ConfigurationRef xlink:href="utilities/configurator.xconf"/>
<ConfigurationRef xlink:href="owl.xconf"/>
<ConfigurationRef xlink:href="ser.xconf"/>          
<Property name="com.distproc.credential" overridable="true" targetFile="distproc.properties" value=""/>
</Configuration>

删除下面一行:

<!--<UndefineProperty name="credentials.admin.adapters"/>-->
<!--<AddToProperty name="credentials.admin.adapters" value="com.Ldap^cn=Manager^encrypted.com.Ldap.cn=admin"/>-->
<Property name="credentials.admin.adapters" overridable="true" targetFile="Credentials.txt" value="com.Ldap^id=proxy"/>
<!--<UndefineProperty name="credentials.admin.adapters"/>
<AddToProperty name="credentials.admin.adapters" value="com.Ldap^cn=admin^encrypted.com.Ldap.cn=admin"/> -->

使用sed

$ sed -z ':a;s/([^n]*)n +/1 /;ta;s/>(<[^>]*>) /n1n/' input_file | sed '/credentials.admin.adapters/d'
<Property name="pom.dbUser" overridable="true" targetFile="db.properties" value="NM"/>
<Property name="pom.jdbc.host" overridable="true" targetFile="db.properties" value="0038.rds.amazonaws.com"/>
<Property name="pom.dbPassword" overridable="true" targetFile="db.properties" value="encrypted.pom.dbPassword"/>
<Property name="pom.serviceName" overridable="true" targetFile="db.properties" value="rds.amazonaws.com:10:0038"/>
<Property name="pom.jdbc.service" overridable="true" targetFile="db.properties" value="0038"/>
<Property name="pom.jdbc.port" overridable="true" targetFile="db.properties" value="10"/>
<ConfigurationRef xlink:href="utilities/configurator.xconf"/>
<ConfigurationRef xlink:href="owl.xconf"/>
<ConfigurationRef xlink:href="ser.xconf"/>
<Property  name="com.distproc.credential" overridable="true" targetFile="distproc.properties" value=""/>
</Configuration>

低于不稳定输出:

value="NM"/>e="pom.dbUser" overridable="true" targetFile="db.properties"
value="0038.rds.amazonaws.com"/>erridable="true" 
targetFile="db.properties"
value="encrypted.pom.dbPassword"/>rridable="true" 
targetFile="db.properties"
value="rds.amazonaws.com:10:0038"/>rridable="true" 
targetFile="db.properties"
value="0038"/>"pom.jdbc.service" overridable="true" 
targetFile="db.properties"
value="10"/>e="pom.jdbc.port" overridable="true" 
targetFile="db.properties"
<ConfigurationRef xlink:href="utilities/configurator.xconf"/>
<ConfigurationRef xlink:href="owl.xconf"/>
<ConfigurationRef xlink:href="ser.xconf"/>

一个大的FS和2个gsub()调用是所有你需要的:

{m,g}awk '
gsub("[ t]*n+[ t]+"," ",$!(NF=NF))+gsub("[>][t ]*n]+[<]",">n<")^_' RS='^$' OFS=
FS='([<]!--)?[<][^></=]+="credentials[.]admin[.]adapters"[^>]*[>]( *--[>])?n*|n+$'  

=

<Property name="pom.dbUser" overridable="true" targetFile="db.properties" value="NM"/>
<Property name="pom.jdbc.host" overridable="true" targetFile="db.properties" value="0038.rds.amazonaws.com"/>
<Property name="pom.dbPassword" overridable="true" targetFile="db.properties" value="encrypted.pom.dbPassword"/>
<Property name="pom.serviceName" overridable="true" targetFile="db.properties" value="rds.amazonaws.com:10:0038"/>
<Property name="pom.jdbc.service" overridable="true" targetFile="db.properties" value="0038"/>
<Property name="pom.jdbc.port" overridable="true" targetFile="db.properties" value="10"/>
<ConfigurationRef xlink:href="utilities/configurator.xconf"/>
<ConfigurationRef xlink:href="owl.xconf"/>
<ConfigurationRef xlink:href="ser.xconf"/>
<Property name="com.distproc.credential" overridable="true" targetFile="distproc.properties" value=""/>
</Configuration>

最新更新