Используйте sed / awk для добавления определенного текста из одного файла в начало другого файла

Я пытаюсь использовать sed / awk для копирования диапазона текста из начала file1 в определенную строку. Затем добавьте этот вывод в начало файла 2 для сценария, который я пишу.

Следующая команда выполняет то, что я хочу извлечь из строки 1 в строку, которой я хочу закончить в file1.

awk '1;/### BEGIN ###/{exit}' file1

Однако я не знаю, как скопировать этот контент в начало файла 2, в котором уже есть текст. Я экспериментировал с sed ниже, чтобы добавить новую строку в начало file2, которая работает.

sed -e '1iA new line is added to top of document' > file2

Как использовать вывод awk в sed для обновления file2? Есть ли способ лучше?

edit: Я экспериментировал, и эта команда работает ниже. Однако мне еще предстоит узнать, есть ли другие способы сделать это, которые могут быть лучше или более эффективными.

cat <(awk '1;/### BEGIN ###/{exit}' file1) file2 > file3

Пример текстового файла1:

Line1
Line...
### BEGIN ###
additional text not wanted...

Пример текстового файла2:

<insert text from file 1 above existing text>
Existing text...

1 ответ
1

$ python -c "for i in range(6): print('file1, line',i+1)" >file1

$ python -c "for i in range(6): print('file2, line',i+1)" >file2

$ head -n 3 file1
file1, line 1
file1, line 2
file1, line 3
   
$ (tac file2 && (head -n 3 file1 | tac) ) | tac >file3

$ cat file3
file1, line 1
file1, line 2
file1, line 3
file2, line 1
file2, line 2
file2, line 3
file2, line 4
file2, line 5
file2, line 6

$ mv file3 file2

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *