Я пытаюсь использовать 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 ответ
$ 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