Заменить содержимое содержимым из другого файла в Linux - PullRequest
0 голосов
/ 23 января 2012

У меня есть файл с текстом (8/9 строк), который называется abc.txt

Я пытаюсь заменить строку с именем в pqr.xml содержимым из файла abc.txt, приведенного выше.

Может кто-нибудь сказать мне, как это сделать?

Я пытался с помощью следующей команды:

sed -i~ "s/ < /Server>/HERE HOW TO PASTE CONTENTS FROM abc.txt/g" pqr.xml

Ответы [ 3 ]

3 голосов
/ 23 января 2012

Я не уверен насчет sed, но с awk вы можете получить то, что пытаетесь достичь.

Скрипт awk:

#!/usr/bin/awk -f

{
# Loop thru each words in your file

    for (i=1;i<=NF;i++) 

# When the word is pqr.xml, we read your second file

        if($i~/pqr\.xml/) 
            {
                system("cat file2"); 

# We store the content of the file in a variable and print it

                getline a; 
                printf a; 

# For everything else we just print the word as is

            }else 
                printf $i" ";
                print "";
}

Файл1:

[jaypal:~/Temp] cat file
this is my pqr.xml
i want to replace

Файл2:

[jaypal:~/Temp] cat file2
replacement
stuff
from
another
file

Тест:

[jaypal:~/Temp] ./script.awk file
this is my replacement
stuff
from
another
file
i want to replace
0 голосов
/ 23 января 2012
$ sed '\| < /Server>|{ r abc.txt
d; }' pqr.xml

Заменит любую строку, содержащую "", содержимым abc.txt. Заменить частичную строку сложнее с помощью sed.

0 голосов
/ 23 января 2012

Возможно, немного больше кода, чем было после, но вот как я это сделаю, используя perl.Дайте мне знать, если это работает для вас:

#!/usr/bin/perl
use warnings;
use strict;

my $xmlfile;
my $replacement;

open REPLACEMENT,"<abc.txt" or die "Couldn't open abc.txt: $!";
while (<REPLACEMENT>) { $replacement .= $_ }
close REPLACEMENT;

open XML,"<pqr.xml"  or die "Couldn't open pqr.xml: $!";
while (<IN>) { $xmlfile .= $_ }
close XML;

$xmlfile = s/< \/Server>/$replacement/gxm;

open NEW,">NEW_pqr.xml";
print NEW $xmlfile;
close NEW;

Если это то, что вам нужно делать довольно часто, вставьте его в файл с именем replace.pl, forexample, и поместите в тот же каталог, что и вы.файл, который вы хотите изменить.Тогда chmod это + х.Затем вы можете вызвать его из сценария оболочки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...