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

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

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

1
задан 18 March 2017 в 17:17

1 ответ

Предположим, что у вас есть файл с именем 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
ответ дан 23 May 2018 в 00:31
  • 1
    Обратите внимание, что ваше совпадение также вставляет строки, если текущая строка, например twenty-three или one two three или foothree, или что-то еще, что соответствует трем. Было бы лучше использовать $1 == "three" или, еще лучше, "$0 == "three". – terdon♦ 18 March 2017 в 17:20
  • 2
    Вы правы, @. Я исправил условие, спасибо! – Cos64 18 March 2017 в 19:20

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

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