Вот решение с использованием sed
:
sed -n '20,$d;/apple/h;19{x;p}'
-n
- подавить печать строк
20,$d
- для любой строки от 20
до конца файла ($
), удалить (d
) его
/apple/h
- для любой строки, которая соответствует регулярному выражению /apple/
, скопируйте ее в « пространство для хранения » (h
)
19{x;p}
- в строке 19
поменяйте местами шаблон и удерживайте пробелы (x
) и напечатайте пространство шаблона (p
)
Обратите внимание, что необходимо использовать строку 19
для окончательной печати, потому что все строки после этого удаляются. В противном случае вы можете использовать адрес « последней строки » - $
.
В этом тесте я добавил apple
в строку 23.
$ sed -n '20,$d;/apple/h;19{x;p}' < file
linenum 8.apple2