Как заставить grep остановиться в первом соответствии на строке?

Я получил следование из подсказок по энергии Wiki:

command! -complete=file -nargs=+ shell call s:runshellcommand(<q-args>)
function! s:runshellcommand(cmdline)
  botright vnew
  setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile nowrap
  call setline(1,a:cmdline)
  call setline(2,substitute(a:cmdline,'.','=','g'))
  execute 'silent $read !'.escape(a:cmdline,'%#')
  setlocal nomodifiable
  1
endfunction

, но измененный в новинку для vnew на третьей строке, затем для Python у меня есть следующий

map <F9> :w:Shell python %<cr><c-w>

, удар f9 сохраняет, выполняет и выводит вывод в новое вертикально, буфер царапины разделения, для легкого дергания/сохранения и т.д.... также поражает c-w, таким образом, я только должен нажать h/c для закрытия, это / пятится к моему коду.

10
задан Community 23 May 2017 в 12:16
поделиться

2 ответа

Если вы уверены, что у вас нет ведущих пробелов, добавьте ^ , чтобы он соответствовал только началу строки, и измените * на + , чтобы соответствовать, только если у вас есть один или несколько буквенно-цифровых символов. (Это означает добавление -E для использования расширенных регулярных выражений.)

grep -Eo "^[[:alnum:]]+[[:blank:]]" test.txt

(Я также удалил . из середины; я не уверен, что он там делал?)

8
ответ дан 4 December 2019 в 01:02
поделиться
grep -oe "^[^ ]* " test.txt
1
ответ дан 4 December 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: