Публикация желаемого вывода без указания правил/логики, которые необходимо применить для его получения, на самом деле не поможет решить вашу проблему. Кто-то может просто повторить/распечатать вывод без привязки к вводу.Предполагая, что вы хотите, чтобы строки между \begin{code}
и \end{code}
исключались, попробуйте
sed -n '/\\begin/,/\\end/ {/{code}/!p}' file
code1
-- comment1
code1A
-- comment2
code1B
codeB
Если вам нужны пустые строки, добавьте /^ *$/p
к скрипту sed
.
РЕДАКТИРОВАТЬ:Вот так:
$ sed -n '/\\begin/,/\\end/ {/{code}/!p}; /^ *$/p' file
code1
-- comment1
code1A
-- comment2
code1B
codeB
Системы Unix/Linux поддерживают базу данных зарегистрированных в данный момент -пользователей, в файле /var/run/utmp
(в некоторых вариантах Unix также есть параллельный файл utmpx
, но оба они служат одной и той же цели ). Программа login
, которая управляет входом в систему на физической консоли, демон ssh или программы входа в систему с графическим интерфейсом для машин с X-серверами обновляют информацию в этом файле, когда пользователь входит в систему или выходит из нее. Команда who
считывает информацию из этой базы данных.
Оболочка, которую вы запускаете с помощью su -
, является оболочкой «логина» в том смысле, что она ведет себя так же, как оболочка входа, запущенная программой login
или демоном ssh (, выполняет те же файлы инициализации и т. д., ), но он не записывает логины в файл utmp
, поэтому вы не видите эти оболочки в выводе команды who
.
С другой стороны, если вы, например. запустите сеанс screen
, screen
записывает запись в файл utmp
, и вы можете увидеть сеанс в выводе команды who
.
Также в некоторых графических DE каждое новое окно терминала, которое вы открываете, считается новым логином и записывается в utmp
, а в других не -в utmp
есть только одна основная запись для пользователя, зарегистрирован на весь сеанс DE. Конечно, это зависит от терминального приложения.