Мне нужен сценарий, чтобы демонтировать и восстановить файл, удаляя строку где-нибудь в нем, и вставляя несколько строк в ее место.
Так A) мне нужна команда, которая выбирает все перед той строкой, но не что строка и ничто после той строки и B) мне нужен тот, который выбирает все после той строки, но не что строка, только после него...
Файл lines
:
line 1
line 2
line three
line 4
Скрипт, который заменяет строку с содержимым line three
тремя новыми строками:
sed '/line three/ c\
This is a new line\nNext line\nLast new line' lines
где \n
«новая строка» отделяет новые строки.
Вывод:
line 1
line 2
This is a new line
Next line
Last new line
line 4
См. Эту ссылку для получения подробной информации о sed
,
Предположим, что Вам назвали файл in.txt
с содержанием:
one
two
three
four
five
И Вам также назвали файл middle.txt
: drei
trois
Если Вы хотите заменить "три" в первом файле с содержанием второго файла, можно записать что-то вроде этого в файл replace.awk
: #!/usr/bin/awk -f
{
if ($0 == "three") {
file="middle.txt";
while ((getline 0) {
print;
}
} else {
print;
}
}
Затем сделайте это исполняемым файлом:
chmod +x replace.awk
И выполненный это:
./replace.awk < in.txt
Результат будет:
one
two
drei
trois
four
five