Результаты кошки grep

Я пытаюсь объединить результаты поиска grep. мой поиск grep находит около 4 файлов в моей системе и выводит их в новую строку для каждого файла. Я думал, передав эту информацию в tr '\n' ' ' Я бы получил все файлы из поиска в одной строке, а затем передал его cat > bigfile чтобы иметь большой файл, содержащий все содержимое файлов из моего поиска. Вместо этого bigfile содержит список файлов, найденных grep.

Как создать bigfile содержит конкатенацию всех файлов, найденных grep.

Вот код, который я пробовал:

 egrep -Rl 'users.*log|log.*users' /home/moose/test | tr '\n' ' ' | cat > bigfile 

а затем bigfile содержит:

 /home/moose/test/file1 /home/moose/test/2 /home/moose/test/3 /home/moose/moose/file4 

Спасибо

4 Solutions collect form web for “Результаты кошки grep”

Если вы пытаетесь bigfile содержимое совпадающих файлов в один bigfile , вам необходимо передать имена файлов в cat как различные аргументы: вы можете сделать это с помощью xargs

 egrep -ZRl 'users.*log|log.*users' /home/moose/test | xargs -0 cat 

Добавление флагов -Z и -0 передает имена с использованием пустых ограничителей, позволяя команде работать с любыми юридическими именами файлов (включая те, которые содержат пробелы или новые строки).

  1. cat здесь ничего не делает. Простое перенаправление вывода tr фактически совпадает с переходом на cat и перенаправление.

  2. Попробуйте paste вместо tr . Например:

    egrep -Rl 'users.*log|log.*users' /home/moose/test | paste -sd' ' > bigfile

  3. xargs работает, и имеет преимущество в том, что он xargs вывод на несколько строк, если / когда он достигает максимальной длины командной строки:

    egrep -Rl 'users.*log|log.*users' /home/moose/test | xargs > bigfile

Кстати, почему даже имеет значение, если файлы перечислены по одному в каждой строке или все на одной строке? Если вы намереваетесь использовать его в командной строке другой программы или в качестве входных данных for цикла for или while, вам, вероятно, будет лучше с одним именем файла в каждой строке, особенно если в имени файла есть файлы с пробелами.

Нет необходимости в последнем канале / cat, вы можете перенаправить его в файл сразу после tr

Может использовать ваш код:

egrep -Rl '. * log | log. * users' / home / moose / test | tr '\ n' ''> bigfile

Это даст вам:

/ home / moose / test / file1 / home / moose / test / 2 / home / moose / test / 3 / home / moose / moose / file4

Вы можете использовать paste с параметром – s (serialize), чтобы получить все строки в одном.

В твоем случае:

 grep .... | paste -sd'\t' 

Здесь -t указывает разделитель, используя вкладку здесь как разделитель, измените ее в соответствии с вашими потребностями.

Пример:

 % printf 'foo\nbar\nspam\negg\n' foo bar spam egg % printf 'foo\nbar\nspam\negg\n' | paste -sd' ' foo bar spam egg % printf 'foo\nbar\nspam\negg\n' | paste -sd'\t' foo bar spam egg 
  • рекурсивный поиск шаблона, затем для каждого матча распечатывают конкретный номер строки SEQUENCE: номер файла и отсутствие содержимого файла
  • Сравните второй столбец 1-го файла и 1-й столбец второго файла и распечатайте сопоставленные записи 1-го файла
  • Игнорировать строки, содержащие заглавную букву
  • Как найти общее количество вхождений текста и файлов с помощью команды find
  • Как совместить число в одном файле с именем в другом файле?
  • Использование grep для поиска файла
  • Слова Grep в файле затем скопируйте файл
  • sed regex не работает
  • Сопоставление двух разных линий, расположенных по крайней мере на N прямых друг от друга
  • Удалите определенное (известное) расширение из имени файла, если оно есть
  • diff, чтобы показать только добавления в измененном файле
  • Interesting Posts

    Как изменить порядок большого количества столбцов?

    Одновременное копирование CD с несколькими битрейтами mp3 с использованием abcde

    Как удалить все внутри каталога, без конкретной папки и содержимого

    Как выбрать имена файлов с последовательными числовыми суффиксами?

    iptables – почему оглушающие порты не работают, чтобы конечные точки могли получить доступ к серверу?

    Необходимо набирать весь путь для выполнения приложения в OSX

    Изменить текст на звездочки на вкладке

    Расширение оболочки для аргументов?

    Что можно удалить из GNOME Desktop => GNOME

    как я могу отправить отложенную почту mutt позже?

    Как автолог с XDM?

    Драйверы FreeBSD Nvidia Яркость экрана и управление питанием

    Переименование нескольких файлов с помощью сценария оболочки

    Настройка шлюза между двумя подсетями в одной физической сети

    Как я могу последовательно установить переменную среды для одной программы?

    Linux и Unix - лучшая ОС в мире.