1

Мне нужна команда SED или AWK, чтобы найти последнюю строку в файле и добавить к ней </pre> .

Такие как:

LINELINELINE

Изменения в:

LINELINELINE</pre>

3 ответа3

1

Вы также можете использовать так называемую составную команду. Это список команд, которые оболочка обрабатывает как отдельную команду для чего-либо внешнего для составной команды.

Да, это отчасти рекурсивное определение; пример облегчает понимание.

Например, чтобы окружить файл <pre> и </pre> , вы можете использовать команду вроде:

( printf '<pre>' ; cat originalfile ; printf '</pre>' ) > newfile

Если у вас нет временного файла, а вы хотите окружить вывод какой-либо команды чем-то другим, вы можете ввести эту команду вместо cat:

( printf '<pre>' ; find / -type d -print ; printf '</pre>' ) > somefile

Все это работает путем применения перенаправления к выходным данным всей составной команды, а не только к ее частям.

Конечно, это не использует sed или awk как требуется, но для такого рода задач переход к этим инструментам является излишним.

0

С (GNU) sed (согласно тегу в вопросе):

$ sed -i -e '$a\</pre>' file.in

Это добавит строку с </pre> в file.in

В качестве альтернативы:

$ sed -i -e '$s@\(.*\)@\1</pre>@' file.in

Это добавит </pre> к последней строке в file.in

0

Как насчет этого:

echo "</pre>" >> /path/to/the/file

Или в начале немного сложнее, вам придется использовать другой файл для вывода.

echo "<pre>" | cat - /path/to/the/file > /path/to/the/newfile

cat означает concatenate, и в этом случае у него есть два аргумента: - означает stdin, поэтому первая часть сцепленного файла - это то, что ему передано (в данном случае - echo). Второй аргумент - это файл, к которому вы хотите добавить префикс. Конкатенированные файлы затем выводятся в newfile .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .