cat результаты grep

Я думаю, вы просто форматируете раздел. Поэтому вроде бы свободное место. Для установки ОС нужно незанятое место. Если вы удалите раздел со свободным пространством, он будет выглядеть как нераспределенное пространство. Затем вы можете установить ОС

    Step 1 : delete the free space partition 

. Если вы устанавливаете ОС на нераспределенное пространство, две ОС все еще существуют.

swap на самом деле файловая система. После формирования раздела с файловой системой подкачки этот раздел действует как виртуальная RAM. это необязательно. Если вы думаете, что у меня достаточно оперативной памяти, не нужно создавать, она не будет создаваться автоматически. Но если вы не создадите раздел подкачки, система подкачает вам вражду. Не останавливайте процесс установки.

Раздел 32 ГБ - это раздел с файловой системой (NTFS или FAT), но не смонтированный. Без смонтированного пользователя нет доступа к пространству. Если вы получаете доступ к пространству, вы можете назначить точку монтирования ( Подобно локальной (C) ), щелкнув правой кнопкой мыши на этом разделе.

1
09.03.2016, 07:38
4 ответа

Вы можете использовать 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
0
27.01.2020, 23:16

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

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

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

4
27.01.2020, 23:16

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

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

egrep -Rl 'users.*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

0
27.01.2020, 23:16
  1. cat здесь ничего не делает. Простое перенаправление вывода tr фактически то же самое, что и перенаправление его на cat и перенаправление.

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

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

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

    egrep -Rl 'users . * журнал | журнал. * / home / moose / test | xargs> bigfile

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

1
27.01.2020, 23:16

Теги

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