Grep, показывающий имя файла и строку, найденную

Это было из-за диспетчера дисплея lightdm. Я установил диспетчер отображения gdm, и я оправился от этой проблемы. Я надеюсь, что это также сработает для вас.

lightdm

1. Go to following link and download gdm for Ubuntu 12.04.2 according to your OS 
architecture i386 or amd64. (chose ubuntu proposed universe out of three listed there.)

http://pkgs.org/download/gdm

[ f2]

Когда система перезагрузится, вы получите экран входа в систему. После входа в систему вы сможете успешно получить доступ к своим окнам. Если вы все равно получаете черный экран, тогда во время входа в систему были выбраны некоторые другие варианты, такие как gnome classic или gdm

1
задан 1 July 2015 в 22:28

3 ответа

Вы использовали -l, что противоположно тому, что вы хотите. Из man grep:

-l, --files-with-matches
      Suppress normal output; instead print the  name  of  each  input
      file  from  which  output would normally have been printed.  The
      scanning will stop on the first  match.   (-l  is  specified  by
      POSIX.)

Вы хотите -H:

-H, --with-filename
      Print the file name for each match.  This is  the  default  when
      there is more than one file to search.

Но это по умолчанию. Просто выполните:

grep -Er 'apple|banana|watermelon' .

(-E сообщает grep действовать как egrep.)

14
ответ дан 23 May 2018 в 19:18
  • 1
    Благодаря! Это почти то, что я хочу ... используя -Er, он показывает имя файла и всю строку со словом, которое я хочу ... но я хочу напечатать только слово, которое он нашел, а не всю строку, содержащую это слово. – sanjuro8998 1 July 2015 в 22:33
  • 2
    @ user2576376 Просто используйте grep -Ero 'apple|banana|watermelon' . – heemayl 1 July 2015 в 22:38
  • 3
    Он возвращает " grep: незаконный вариант - o " ... Я запускаю эти команды на сервере AIX, скажите, есть ли способ показать вам версию системы или что-нибудь, что может помочь вам определить, я на самом деле начинаю. – sanjuro8998 1 July 2015 в 22:40
  • 4
    @ user2576376 Тогда вы спрашиваете об этом на неправильном сайте. Спросите на Unix & Linux . – muru 1 July 2015 в 22:45

Вот команда, которую вы ищете:

grep -R "apple\|banana\|watermelon" <search_path>

. -R будет рекурсивно читать все файлы в каждом каталоге в search_path. Имя файла будет отображаться для каждого совпадения.

3
ответ дан 23 May 2018 в 19:18
  • 1
    Как я могу выполнить эту команду в текущем каталоге? Я попытался: grep -R "apple\|banana\|watermelon" ., но он не возвратил никакого результата. – sanjuro8998 1 July 2015 в 22:56

Ниже вы получите нужный результат (используя bash):

for x in apple banana watermelon ; do grep $x * ; done

На выходе будут представлены все строки, содержащие строку поиска.

Ниже вы увидите только строку поиска:

for x in apple banana watermelon ; do grep -l $x * |xargs -I{} echo {}:$x; done
1
ответ дан 23 May 2018 в 19:18
  • 1
    Спасибо за помощь, но она дает мне весь контент линии - & gt; Filename:the fruit is apple ... мне нужно, например: Filename:apple – sanjuro8998 2 July 2015 в 21:13
  • 2
    @ sanjuro8998 Я отредактировал ответ, чтобы дать вам только строку поиска в качестве вывода – NZD 2 July 2015 в 22:36

Другие вопросы по тегам:

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