Для оболочек POSIX:
$ before=4 after=3 line=6
$ seq 10 | sed "$((line-before)),\$!d; $((line+after))q"
2
3
4
5
6
7
8
9
Переводится как:
!
) из диапазона, начиная с строки - перед -м до конца ($
). Таким образом, мы даже не будем читать после строки + после -й ] линия.
Однако это означает, что команда, передающая свои данные в sed
, будет прервана с помощью SIGPIPE, если она продолжит отправку данных вскоре после того, что может быть или не быть желательным.
Вместо этого я предлагаю вам установить fish из репозитория EPEL для CentOS/Redhat.
sudo yum install epel-release
Тогда, если вы попробуете sudo yum list fish
, вы должны это увидеть.
Я знаю, что это не ответ на ваш вопрос, но я думаю, что это способ сделать то, чего вы пытаетесь достичь.
Раньше я этого не замечал, но сборки CentOS почему-то не удались. Вы можете использовать репозиторий RHEL 7, но я запустил перестройку, и она прошла успешно, так что теперь она должна работать!