Тут може бути найпростіший інструмент sed
. Для того, щоб вставити b.txt
в a.txt
після 5 - й лінії, ви могли б написати:
sed '5r b.txt' a.txt
sed
читає файл, вказаний як аргумент ( a.txt
), рядок за рядком. Усі рядки відтворюються у висновку так само, як вони з'явилися на вході, якщо тільки вони не були змінені командою.
Це 5
адреса (номер рядка), за якою виконується наступна команда. Ми використовуємо команду r
, яка бере аргумент імені файлу (тут b.txt
), повністю його читає і вставляє у висновок після поточного рядка.
Як зазначено вище, цей sed
командний рядок буде друкувати вихід лише до терміналу, не записуючи до файлів. Ви можете або перенаправити його до нового файлу (не будь-якого з вхідних файлів!), Використовуючи перехідний вихід Bash:
sed '5r b.txt' a.txt > c.txt
Або ви можете безпосередньо змінити зовнішній вхідний файл a.txt
, використовуючи перемикач sed
s -i
(для "на місці"). Якщо ви запишете його як -i.bak
, воно спершу зробить резервну копію вихідного вхідного файлу із суфіксом .bak
:
sed -i '5r b.txt' a.txt
Приклад:
$ cat a.txt
January
February
March
April
May
October
November
December
$ cat b.txt
June
July
August
September
$ sed '5r b.txt' a.txt
January
February
March
April
May
June
July
August
September
October
November
December