У меня есть мини-система с ограниченным числом двоичных файлов ( bash
, cp
, cat
, sed
, ...). У меня нет tail
команды, и мне интересно, могу ли я подражать хвостовой функциональности сsed
cat foo.txt | tail -n 10
Я знаю, что могу печатать строки 1-10 с помощью sed cat foo.txt | sed -n '1,10p'
, но как мне распечатать последние 10 строк?
Ответы:
Вы могли бы сделать что-то вроде этого:
источник
sed -e :a -e '$q;N;11,$D;ba' foo
чтобы соответствовать вопросу.sed -e '1,11p' -e :a -e '$q;N;11,$D;ba'
но я все еще хотел бы понять хвостовую часть !!!но если у вас нет tac, вы можете использовать только sed следующим образом:
источник
Является ли
expr
доступна с вашей системой? Затем вы можете попытаться оценить желаемый номер строки после того, как подсчитали общее количество строк в файле.Я создал файл с именем,
tmp
содержащим цифры от 1 до 20 в каждой строке.Конечно, вы можете использовать
wc -l
, если доступно.Команда для вычисления общего количества строк в файле взята из sed one liners . Тем не менее, я не проверял, работает ли он также с пустыми файлами.
PS Если
expr
нет, вы можете использовать числа вычитания в Bash, как показано ниже:источник