поиск текста на выходе терминала

33

Я запускаю приложение с командой, $ grails run-appкоторая печатает вход в терминал, как показано ниже.

search_text_terminal

То, что я хочу, это поиск определенного текста (скажем user authorities) в этом журнале, чтобы я мог проверить дальше. Один из способов использовать Logis Apis для записи в текстовый файл, но я хочу найти его в терминале в данный момент.

Я нашел похожий вопрос в том, как сделать поиск текста на терминале напрямую, который предлагает screenкоманду, но я понятия не имею, как screenработает в этом случае. Я пытался, $ screen grails run-app но не мог двигаться вперед.

Я могу видеть списки экранов с

prayag@prayag:~/zlab/nioc2egdelonk$ screen -list
There is a screen on:
    8076.pts-2.prayag   (10/06/2013 12:13:25 PM)    (Attached)
1 Socket in /var/run/screen/S-prayag.
prayagupd
источник
как бы вы ни использовали экранную команду, но я рекомендую оставить ее и использоватьtmux
PersianGulf
@MohsenPahlevanzadeh, конечно, я тоже попробую tmux. Слышал об этом много.
prayagupd

Ответы:

23

Ctrl+a( screenпрефикс команды по умолчанию ), [(введите copyрежим), а затем, ?SEARCH_TEXTкажется, работает. Нажмите, nчтобы перейти к следующему событию. Оттуда вы можете скопировать слова, строки, регионы и т. Д., Чтобы поместить их в файлы или вставить позже (с помощью Ctrl+a, ]).

введите описание изображения здесь

prayagupd
источник
5
Я не могу этого сделать. Таким образом, вам нужно нажать 3 клавиши одновременно? ctrl, a, [?
Капай
34
использованиеshift+ctrl+f
Ja8zyjits
15

Если вы используете Konsole (эмулятор терминала KDE), вы можете использовать Ctrl+ Shift+ F. Это может работать и в других (Linux) терминальных эмуляторах.

Редактировать:
@sumit сообщает, что это работает и в Gnome Terminal .
@vdicarlo сообщает, что это также работает в терминале XFCE4 .

Augustin
источник
1
Это работает и в эмуляторе терминала GNOME.
Саммит
Работает на terminator. Благодарность!
ryanjdillon
8

Вы можете использовать grepпосле grailsкоманды: grails run-app | grep "user authorities". Тем не менее, вам придется повторно запустить вашу команду.

Timo
источник
3
Этот ответ не должен быть отклонен, его абсолютно правильно.
amrx
2
Хотя это правильно, более полезно иметь что-то, что можно сделать после того, как вывод уже напечатан.
Людвик,
@ Барон Я даже почти уверен, что спрашивающий подразумевал, что команда уже запущена, так что это не отвечает на вопрос.
Никому
3

Перенаправьте вывод в pipe и отправьте его grepкоманде:

grails run-app | grep user authorities
Соня Баласубраманян
источник
1

Перенаправить вывод вашей команды в vim-editor: grails run-app | vim -

Несколько советов по поиску с использованием Vim:

  • введите и /введите строку поискаuser authorities
  • введите, :set hlsearchчтобы выделить результаты поиска
  • введите nдля поиска вперед или Shift+nдля поиска назад
  • помните, что вы сейчас в редакторе, поэтому, если вы случайно сделали некоторые изменения, вы можете вернуться, просто нажмите ESCодин раз, чтобы выйти из режима редактирования, затем нажмите, uчтобы отменить одно редактирование
  • введите, :q!чтобы выйти из Vim и отменить результаты поиска
  • Вы можете делать все, что вы хотите :-D http://vim.wikia.com/wiki/Vim_Tips_Wiki
graceman9
источник
чему-то научился!
oneindelijk