Мне нужно скопировать содержимое текстового файла и вставить его в другой текстовый файл. Первый текстовый файл содержит 10 строк данных, и мне нужно, чтобы они были скопированы во второй текстовый файл, начиная со строки № 5 (например). Таким образом, во втором текстовом файле эти данные должны быть записаны из строки 5 в строку 14. Как это можно сделать? Заранее спасибо. Считайте меня новичком в отношении Linux.
text-processing
Г. Пасхалис
источник
источник
(head -n 5 a.txt ; cat b.txt ; tail -n +6 a.txt) > c.txt
Самый простой инструмент здесь может быть
sed
. Для того, чтобы вставитьb.txt
вa.txt
после 5 - й линии, вы могли бы написать:sed
читает файл, указанный как аргумент (a.txt
), построчно. Все строки воспроизводятся в выходных данных так же, как они появлялись во входных данных, если только они не изменены командой.5
Это адрес (номер строки) , при которой следующая команда должна быть выполнена. Команда, которую мы используемr
, принимает имя файла в качестве аргумента (здесьb.txt
), полностью его читает и вставляет в вывод после текущей строки.Как указано выше, эта
sed
командная строка будет печатать только вывод на терминал, без записи в какие-либо файлы. Вы можете перенаправить его в новый файл (а не во входные файлы!), Используя перенаправление вывода Bash:Или вы можете напрямую изменить внешний входной файл
a.txt
с помощью переключателяsed
's-i
(для "на месте"). Если вы напишите его как-i.bak
, он сначала создаст резервную копию исходного входного файла с суффиксом.bak
:Пример:
источник
(Повторное использование элегантного примера от @ByteCommander :)
источник