Как я беру список и удаляю его из файла?

export GREP_COLOR='1;32'; cat /dev/urandom | hexdump -C | grep --color=auto "ca fe"

Это (и другие команды из http://www.commandlinefu.com/commands/view/6663/pretend-to-be-busy-in-office-to-enjoy-a-cup-of-coffee) также кажется очень, hackish'' и смущает большинство людей, которые уставились на терминал в данный момент ;)

10
05.11.2010, 09:16
3 ответа
grep -Fxf list -v /etc/remotedomains > remotedomains.new
mv remotedomains.new /etc/remotedomains

-v говорит grep только производить строки, которые не соответствуют шаблону.

-f list говорит grep читать шаблоны из файла list.

-F говорит grep интерпретировать шаблоны, поскольку плоскость представляет в виде строки, не регулярные выражения (таким образом, Вы не столкнетесь с проблемой с regex метасимволами).

-x говорит grep соответствовать целой строке, например, если существует шаблон foo это должно только удалить строку foo, не строка foobar или barfoo.

10
27.01.2020, 20:02
  • 1
    zsh не должен быть в /usr/bin/ если это - это, был установлен неправильно. все оболочки должны быть в /bin ---------121 примечание--------47093----: всегда не забывайте копировать /etc/localdomains и /etc/remotedomains прежде, чем сделать материал как это. –  xenoterracide 24.10.2010, 07:03
  • 2
    -F для фиксированного сопоставления строк (“точные совпадения”), но оно не вынуждает шаблон соответствовать целой строке. POSIX указывает -x отметьте для ограничения соответствий экземплярами, где шаблон соответствует целой строке. –  Chris Johnsen 06.11.2010, 05:14
  • 3
    @Chris: Вот еще, хорошая выгода. –  sepp2k 07.11.2010, 02:22

sed -r -i -e '/^(domain1|domain2|domain3|...|domainN)$/d' domainlist.txt

Если Ваш список доменов для удаления находится в файле затем:

sed -r -i -e '/^'"$(xargs <removelist.txt|sed -e 's/ /|/g)"')$/d' domainlist.txt

Примечания:

  1. -i.bak использования, чтобы иметь sed делают резервное копирование domainlist.txt

  2. Если removelist.txt имеет много тысяч записей, это могло бы переполнить максимальной длины командной строки. Это не вероятный сценарий, но что-то, о чем необходимо знать.

На дальнейшем отражении тот риск может быть устранен с:

for RE in $(xargs <removelist.txt|sed -e 's/ /|/g') ; \
  do sed -r -i -e '/^('"$RE"')$/d' domainlist.txt ; \
done
0
27.01.2020, 20:02

Используйте связь!

comm -23 /etc/remotedomains remove

На странице руководства:

Сравните отсортированные файлы FILE1 и FILE2 построчно.

Без опций создать вывод в три столбца. Первый столбец содержит строки, уникальные для FILE1, второй столбец содержит строки, уникальные для FILE2, а третий столбец содержит строки, общие для обоих файлов.

Опции -1, -2 и -3 отключают соответствующие столбцы.

Однако требуется, чтобы файлы были отсортированы.

1
27.01.2020, 20:02

Теги

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