Я думаю, вы обнаружите, что он висит на секунде sed
, где вы не указали имя файла для работы.Другими словами, он будет принимать стандартный ввод с терминала.
Вы не получите вывод с первого sed
, поскольку -n
предотвращает печать по умолчанию пространства шаблона.Если вы пытаетесь изменить фактический файл , а не выводить изменения в стандартный вывод, вам необходим редактор мест нахождения -i
.
Если вы не можете использовать опцию на месте,вам нужно будет сделать что-то вроде:
sed -n '1,9d' ${file} >${file}.tmp0
sed -n -e :a -e '1,4!{P;N;D;};N;ba' ${file}.tmp0 >${file}
rm -f ${file}.tmp0
При этом для внесения изменений используется временный файл, кроме последнего, который перезаписывает исходный файл.Имейте в виду, что это меняет оригинал - если это не то, что вы хотите, вы можете изменить второй sed
для вывода на ${file}.tmp2
, но вам придется настроить последующие команды, чтобы принять это вaccount.
Если вы действительно хотите удалить первые девять и последние четыре строки файла, вы также можете использовать что-то вроде:
head --lines=-4 oldfile.txt | tail --lines=+10 >newfile.txt
, если у вас есть реализация [rd]ecent
head/tail
.head
печатает все, кроме последних четырех строк, а tail
начинает печатать с десятой строки.