Мне нужна команда SED или AWK, чтобы найти последнюю строку в файле и добавить к ней </pre>
.
Такие как:
LINELINELINE
Изменения в:
LINELINELINE</pre>
Вы также можете использовать так называемую составную команду. Это список команд, которые оболочка обрабатывает как отдельную команду для чего-либо внешнего для составной команды.
Да, это отчасти рекурсивное определение; пример облегчает понимание.
Например, чтобы окружить файл <pre>
и </pre>
, вы можете использовать команду вроде:
( printf '<pre>' ; cat originalfile ; printf '</pre>' ) > newfile
Если у вас нет временного файла, а вы хотите окружить вывод какой-либо команды чем-то другим, вы можете ввести эту команду вместо cat
:
( printf '<pre>' ; find / -type d -print ; printf '</pre>' ) > somefile
Все это работает путем применения перенаправления к выходным данным всей составной команды, а не только к ее частям.
Конечно, это не использует sed
или awk
как требуется, но для такого рода задач переход к этим инструментам является излишним.
С (GNU) sed
(согласно тегу в вопросе):
$ sed -i -e '$a\</pre>' file.in
Это добавит строку с </pre>
в file.in
В качестве альтернативы:
$ sed -i -e '$s@\(.*\)@\1</pre>@' file.in
Это добавит </pre>
к последней строке в file.in
Как насчет этого:
echo "</pre>" >> /path/to/the/file
Или в начале немного сложнее, вам придется использовать другой файл для вывода.
echo "<pre>" | cat - /path/to/the/file > /path/to/the/newfile
cat
означает concatenate, и в этом случае у него есть два аргумента: -
означает stdin, поэтому первая часть сцепленного файла - это то, что ему передано (в данном случае - echo
). Второй аргумент - это файл, к которому вы хотите добавить префикс. Конкатенированные файлы затем выводятся в newfile
.