Сценарий Bash для удаления и вставки строк

Мне нужен сценарий, чтобы демонтировать и восстановить файл, удаляя строку где-нибудь в нем, и вставляя несколько строк в ее место.

Так A) мне нужна команда, которая выбирает все перед той строкой, но не что строка и ничто после той строки и B) мне нужен тот, который выбирает все после той строки, но не что строка, только после него...

2
задан 18 March 2017 в 16:17

2 ответа

Пример использования sed

Файл 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,

www.grymoire.com/Unix/Sed.html

4
ответ дан 2 December 2019 в 02:15

Предположим, что Вам назвали файл 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
0
ответ дан 2 December 2019 в 02:15

Другие вопросы по тегам:

Похожие вопросы: