Нет, но вы можете скопировать содержимое любого регистра в переменную Vim, а затем использовать их как "виртуальные регистры".
" Copy the default register.
:let foo = @"
" Use it; from normal mode: "=foo<CR>p
:put =foo
/^#/
соответствует строкам, которые начинаются (^
) с #
. d
удаляет их. Действие по умолчанию sed
состоит в том, чтобы напечатать строку (если не задано -n
), поэтому печатается все остальное.
Я знаю, что
#
может означать конец команды или комментария.Я знаю, что
$
указывает на начало команды.
Мм, нет. В регулярных выражениях ^
отмечает начало строки (или строки), $
конец. #
используется как символ комментария, поэтому обычно в начале строки.
Обратите внимание, что многие файлы, использующие #
в качестве символа комментария, позволяют использовать его после команды или иначе не непосредственно в начале строки. Он может быть с отступом, как в комментарии, оставшемся в вашем примере.
Что-то вроде /^ *#/d
(или /^[ \t]*#/d
) может быть лучше, так как оно также удалит комментарии с отступом.
Командная строка sed
sed '/^#/d' ~/.profile
удалит все комментарии оболочки, которые начинаются в начале строки из файла ~/.profile
, например первая, но не вторая, из следующих двух строк:
# comment
# indented comment
Он делает это, пытаясь сопоставить #
в начале строки (^
) и удаляет ( d
) любые совпадающие строки.
Чтобы удалить комментарии с отступом из сценария оболочки, используйте
sed '/^[[:blank:]]*#/d' file
[[:blank:]]
будут соответствовать пробелам и горизонтальным табуляциям.
$
означает только «начало команды» в том смысле, что это обычное приглашение, используемое оболочкой, чтобы предложить вам ввести что-то в командной строке.
#
— это символ, который представляет комментарий в оболочке. Он не служит никакой цели в сценарии sed
, кроме как для сопоставления #
во вводе1. Я никогда не видел, чтобы оно использовалось для обозначения «конца команды».
1 Символ #
вводит комментарий и в сценарии sed
, если используется между командами.