1

Я пытаюсь добавить содержимое текстового файла в середину другого текстового файла, то есть перед определенной строкой. Я использовал приведенную ниже команду для добавления текста после конкретной строки, например

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

Я пытаюсь добавить содержимое файла перед определенной строкой. Я не могу гарантировать номер строки, поэтому я не могу использовать этот метод.

Например,

    <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>

Я хочу добавить содержимое data.txt перед строкой </xa-datasource> .

2 ответа2

1

Вы можете сделать это, используя sed insert с подстановкой команды bash.

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

таким образом, текст из inputFile.txt будет вставлен в строку, предшествующую </xa-datasource>

Если вы хотите, чтобы он был вставлен перед данной строкой, но в той же строке, вы можете использовать замену sed вместо insert:

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

вторым способом вы заменяете совпавшую строку новой, поэтому вы должны включить ее в конец замещающей строки

Некоторые люди предпочитают использовать backtics '' вместо $() по причинам переносимости, но я предпочитаю вторую форму, если она только для bash, так как она выглядит более читабельной для меня

0

После некоторого поиска и истечения срока действия Google я получил стабильную команду, чтобы сделать это.

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

inputfile.txt - это файл, который нам нужно вставить перед соответствующей строкой

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .