Поскольку Вы спросили “в одной строке”:
awk '{print>sprintf("%sfile.%d",NR%2?"odd":"even",PROCINFO["pid"])}' filename
Обратите внимание, что большая часть кода происходит из-за Вашего необычного выходного выбора имени файла. Иначе следующего кода было бы достаточно для помещения нечетных строк в “строку 1” и даже строки в “строке 0”:
awk '{print>"line-"NR%2}' filename
Нет никакого различия. Точка .
не специальный символ оболочки, для которого нужно заключение в кавычки, и обратная косая черта будет просто удалена во время удаления кавычки. Это верно в большинстве оболочек, не просто bash
.
Не ответ на Ваш вопрос, который был уже рассмотрен @jw013, но обратите внимание на то, что в то время как \
и {}
являются лишними здесь, существует несколько вещей, отсутствующих. Как переменные должен быть заключен в кавычки, и --
отметить конец опций отсутствует.
cp -v -- "$LOG_DIR/$APPLICATION".*.log "$ARCHIVED_LOG_DIR"
\
вводит в заблуждение, но безопасный, {}
является косметическим и вопрос вкуса, но недостающие кавычки или - являются неправильными.
– Stéphane Chazelas
06.11.2012, 01:16