Моего вопроса варианта следующего:Заменить строку в текстовом файле с линией из другого текстового файла
bash: replace an entire line in a text file
Проблемы был заменить Nth строки файла с заданной строкой (линия замены). В моем случае я не могу просто ввести строку замены, но я должен прочитать ее из другого файла.
Например:
textfile1:
my line
your line
his line
her line
textfile2:
our line
Я хочу заменить на 2-й линии textfile1 с линией от textfile2.
Я думал, что я мог бы просто читать textfile2
while IFS= read SingleLine
и т.д., а затем использовать $SingleLine
в качестве замены строки, но мне не удалось ... В зависимости от типа цитат, которые я использовал (пожалуйста, простите мое невежество. ..) я в конечном итоге заменить линию в вопросе с текстом $ SingleLine или SingleLine или просто получить сообщение об ошибке: - [
Я уверен, что вы можете мне помочь !!
EDIT о решении: я пошел для встроенного решения с небольшим изменением
sed '2d;1r textfile2' textfile1 > newfile1
Чтобы заменить Nth линию, то решение будет (см комментарии по принятому решению для объяснения)
sed 'Nd;Mr textfile2' textfile1 > newfile1
с N номером нужной строки и M = N-1.
Спасибо всем!
Спасибо! Но ... не могли бы вы объяснить часть «2d; 1r»? В частности: что, если бы я хотел заменить 4-ю строчку ?! – ppapakon
'2d' удаляет 2-ю строку, а' 1r file2' заменяет содержимое file2 после конца строки 1. Для замены использования 4-й строки: 'sed '4d; 3r file2' file1' – anubhava
Отлично! Спасибо, это было очень быстро! :-) Я пошел для встроенного решения с небольшим изменением 'sed '2d; 1r textfile2' textfile1> newfile1', чтобы сохранить новый файл, не разрушая исходный. – ppapakon