Как я могу отфильтровать определенные строки, все еще записывая в тот же файл? - PullRequest
0 голосов
/ 15 мая 2018

Я поставил себе маленький проект, который включал файл хоста StevenBlack .Я знаю, что он предоставляет способ создать свой собственный файл hosts с помощью своего скрипта Python, однако я хотел поставить перед собой задачу.

Проблема заключается в следующем:

У меня есть скрипт, который получает файл Fakenews+Gambling+Social hosts.

Однако я все еще хочу получить доступ к Reddit.И что еще хуже, файл постоянно обновляется.Это означает, что я не могу удалить строки с sed -e '123,456d'.

Я думаю, что я достаточно близко.Но я не уверен, вот команда

cat ./hosts | grep "# Reddit" -A10 | sed -e '1,11d'

Хотя она действительно удаляет записи Reddit , я понятия не имею, как ее собрать.Это означает, что с помощью приведенной выше команды я действительно могу отфильтровать строки Reddit , но я не знаю, как поместить их обратно в файл hosts и не создать пустой файл.

Этомой первый пост, и я очень плохо объясняю проблемы.Если есть необходимость в разъяснениях, просто скажите это.Кроме того, английский не мой родной язык, так что это не поможет.

РЕДАКТИРОВАТЬ: Пример

cd /home/myname/Documents/git

wget https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-social/hosts

ВНа данный момент у меня есть файл необработанных хостов.Теперь я хочу отфильтровать Reddit.Записи, которые я хочу удалить:

Reddit

0.0.0.0 reddit.com

0.0.0.0 www.reddit.com

0.0.0.0i.reddit.com

0.0.0.0 redd.it

И теперь возникает проблема.Я не знаю, как удалить их из файла hosts, поскольку строки постоянно меняются.

Мой подход был cat ./hosts | grep "# Reddit" -A10 | sed -e '1,11d', что в ретроспективе довольно бесполезно.

1 Ответ

0 голосов
/ 15 мая 2018

Вы можете отфильтровать их при загрузке:

wget "$url" -O- | grep -v 'redd.\?it' > hosts
...