Это работает в одной передаче через файл и не должно хранить целый файл в памяти. Это действительно сохраняет открытые дескрипторы файлов для каждого целевого файла.
awk -F '\t' '
NR==FNR {population[$1]=$2; next}
FNR==1 {
for (i=1; i<=NF; i++) {
destination[i] = population[$i] ".txt"
}
}
{
delete separator
for (i=1; i<=NF; i++) {
printf "%s%s", separator[destination[i]], $i > destination[i]
separator[destination[i]] = FS
}
for (file in separator) {
printf "\n" > file
}
}
' populations.txt database.txt
Это управляется через MANPAGER
.
Страницы руководства
по умолчанию для пейджера
из меньше -is
.
Можно просто выделить текущий выбор:
man -P "less -isg" <command>
Или установить переменную MANPAGER
:
export MANPAGER="less -isg"
Можно также использовать vim
, где курсор подсвечен, чтобы текущий выбор отображался по-другому.:
man -P "sh -c \"col -b | vim -c 'set ft=man ts=8 nomod nolist nonu' \
-c 'nnoremap i <nop>' \
-c 'nnoremap <Space> <C-f>' \
-c 'noremap q :quit<CR>' -\"" <command>
Взято из Zameer Manji:
- ft=man позволяет раскрашивать man-страницу.
- ts=8 обеспечивает меньшую ширину совпадения символов табуляции.
- nomod удаляет предупреждение об изменении при попытке выхода.
- nonu удаляет номера строк.
- нолист отключает листовки, так что отслеживающие пробелы и дополнительные табуляции не выделяются.
- nnoremap i гарантирует, что мы случайно не войдем в режим вставки при просмотре man-страницы.
Плюс моя собственная возможность использовать пространство для разбивки по страницам и qu
с помощью q
:
-c 'nnoremap <Space> <C-f>'
-c 'noremap q :quit<CR>'
Установите его в качестве пейджера по умолчанию, добавив его в профиль по умолчанию:
export MANPAGER="sh -c \"col -b | vim -c 'set ft=man ts=8 nomod nolist nonu' \
-c 'nnoremap i <nop>' \
-c 'nnoremap <Space> <C-f>' \
-c 'noremap q :quit<CR>' -\""