Adicionando conteúdo de um arquivo de texto ao meio de outro arquivo de texto antes de uma string específica

1

Eu estou tentando adicionar conteúdo de um arquivo de texto ao meio de outro arquivo de texto, que também antes de uma determinada string. Eu usei o comando abaixo para adicionar texto depois de uma sequência de caracteres como

sed '/line3/ r data.txt' file1.txt (this will add contents of data.txt to file1.txt after "line3" string.

Eu estou tentando adicionar o conteúdo do arquivo antes de uma string específica. Eu não posso garantir o número da linha, então eu não posso usar esse método.

Por exemplo,

    <xa-datasource-property
 name="URL">jdbc:oracle:thin:@otto.na.ad.atg.com:1521:ora10r2</xa-datasource-
property>
    <xa-datasource-property name="User">username</xa-datasource-property>
    <xa-datasource-property name="Password">password</xa-datasource-property>
    <!-- Uncomment the following if you are using Oracle 9i
    <xa-datasource-property name="oracle.jdbc.V8Compatible">true</xa-
datasource-property>
   -->
    <exception-sorter-class-name>
        org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter
    </exception-sorter-class-name>
  </xa-datasource>

Eu quero adicionar o conteúdo de data.txt antes de </xa-datasource> string.

    
por Unnikrishnan 28.04.2017 / 11:43

2 respostas

0

Após algumas pesquisas no Google e vencimentos, recebi um comando estável para fazer isso.

 sed $'/<\/xa-datasource>/{e cat     inputfile.txt\n}' file1.txt

inputfile.txt é o arquivo que precisamos inserir antes da string correspondente

    
por 02.05.2017 / 15:21
1

Você pode fazer isso usando a inserção sed com substituição de comando bash

sed "/<\/xa-datasource>/i $(<inputFile.txt)" file1.txt

desta forma, o texto de dentro de inputFile.txt será inserido na linha anterior a </xa-datasource>

Se você quer que ele seja inserido antes da string dada, mas na mesma linha, você pode usar a substituição de sed em vez de inserir:

sed "s/<\/xa-datasource>/ $(<inputFile.txt)<\/xa-datasource>/" file1.txt

com a segunda maneira, você está substituindo a string combinada pela nova, então você deve incluí-la no final da string de substituição

Algumas pessoas preferem usar backtics '' em vez de $() devido a razões de portabilidade, mas eu prefiro a segunda forma se for para bash apenas porque parece mais legível para mim

    
por 30.04.2017 / 21:56