grep фильтруют все строки плюс одна перед каждым хитом

Вы хотите, чтобы тот раздел с другой файловой системой был смонтирован в Linux. Таким образом, может быть два случая:

1. Если раздел должен быть смонтирован в каждой начальной загрузке:

Необходимо создать пустой каталог, где Вы хотите смонтировать ту файловую систему. Предположим, что я хочу смонтировать раздел окон (/dev/sda1) к /myname, затем я должен создать пустой каталог /myname

$ sudo mkdir /myname

Теперь необходимо открыться /etc/fstab файл и добавляет запись для файловой системы.

$ sudo vi /etc/fstab

Добавьте следующую строку к файлу:

/dev/sda1 /myname ntfs defaults 0 0

Теперь, так как Вы изменили/etc/fstab файл, необходимо сделать ядро для чтения файла для монтирования записи, которую Вы добавили сейчас.

$ sudo mount -a

2. Если раздел должен быть смонтирован в течение этого времени только, но не для каждой начальной загрузки:

Можно использовать mount команда, чтобы сказать этому монтировать раздел:

$ sudo mount /dev/sda1 /myname

3
30.08.2013, 04:21
3 ответа

Вот более подробная версия по существу то же самое @ 1_cr , опубликованная выше и @ Ash показала в Pastebin , надеюсь, используя более читаемый синтаксис:

awk '{
        lastLine = currentLine;
        currentLine = $0;
    }

    /foo|bar/ \
    {
        getline currentLine
        next
    }

    NR > 1 \
    {
        print lastLine;
    }

    END \
    {
        if ( currentLine !~ /foo|bar/ )
            print currentLine;
    }
    ' InputFile
0
27.01.2020, 21:10

Возможно, awk?

awk 'BEGIN{a = "foo"}; a !~ /foo|bar/ && $0 !~ /foo|bar/{print a};
{a = $0};END{if(a !~ /foo|bar/){print a}}' InputFile
5
27.01.2020, 21:10
  • 1
    , который, кажется, работает, хотя трудно читать ;) Разве не возможно достигнуть этого с grep? –  rubo77 29.08.2013, 17:48
  • 2
    И как я исключил бы "панель" также? –  rubo77 29.08.2013, 17:52
  • 3
    @rubo77, обновленный для исключения bar. Не должно случаться так, что трудно, чтобы проанализировать, если Вы понимаете что переменная a используется для отслеживания предыдущей строки. Таким образом, поскольку каждая строка обрабатывается, решение относительно того, распечатать ли предыдущую строку, делается на основе содержания тока и предыдущей строки. –  iruvar 29.08.2013, 17:55
  • 4
    @ash - 1_CR отклонил Вашу попытку сделать это более читаемым. Как компромисс я создал pastebin Вашего редактирования, которое я согласовываю, важно начиная с ответа новичку awk'er может быть твердым к обзору. pastebin.com/HmYbHJh7 –  slm♦ 31.08.2013, 09:29
  • 5
    @rubo77 - видит мой комментарий выше к пеплу, он включает URL в более читаемую версию этого ответа. –  slm♦ 31.08.2013, 09:30

Попробуйте это:

grep -v "$(grep -E -B1 "foo|bar" InputFile)" InputFile
4
27.01.2020, 21:10
  • 1
    Одна вещь опасаться с этим ответом - это использует строки в InputFile, который будет удален как регулярные выражения. Пока те строки никогда не содержат ., *, и т.д. это должно быть в порядке. grep -a должен препятствовать тому, чтобы это было проблемой. –  ash 30.08.2013, 08:57
  • 2
    О, и еще одна вещь - если строка прежде a foo или bar когда-либо повторяется в другом месте в файле, он будет отброшен оттуда также. –  ash 30.08.2013, 08:57
  • 3
    @ash: так там было бы лучшее решение так или иначе? –  rubo77 31.08.2013, 07:38
  • 4
    awk является лучшим способом пойти, как 1_CR ответил. Если Вам нравится, я могу сделать тот ответ более читаемым; это в настоящее время пишется очень краткий; более читаемый, вероятно, будет меньше. –  ash 31.08.2013, 07:40
  • 5
    благодарит за Ваш пример: pastebin.com/HmYbHJh7, Возможно, можно сделать это как отдельный ответ, я буду upvote что один затем –  rubo77 31.08.2013, 10:59

Теги

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