如何在仍然写入同一文件的同时过滤掉特定的行?
How can I filter out specific lines while still writing to the same file?
我给自己定了一个 小的 项目,涉及 StevenBlack's host file。我知道他提供了一种使用他的 Python 脚本制作您自己的主机文件的方法,但是我想给自己设定一个挑战。
问题如下:
我有一个获取 Fakenews+Gambling+Social
主机文件的脚本。
不过,我还是想访问 Reddit。更糟糕的是,该文件会不断更新。这意味着我无法删除带有 sed -e '123,456d'
.
的行
我想我已经很接近了。但我不确定,这是命令
cat ./hosts | grep "# Reddit" -A10 | sed -e '1,11d'
虽然它确实删除了 Reddit 条目,但我不知道如何将其重新组合在一起。意思是,使用上面的命令我确实可以过滤掉 Reddit 行,但我不知道如何放回主机文件而不是创建一个空文件。
这是我的第一个post,我很不擅长解释问题。如果有任何需要澄清的地方,就直说吧。另外,英语不是我的第一语言,所以这也无济于事。
编辑:例子
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.0 i.reddit.com
0.0.0.0 redd.it
问题来了。我不知道如何从主机文件中删除它们,因为行在不断变化。
我的方法是cat ./hosts | grep "# Reddit" -A10 | sed -e '1,11d'
,事后看来这很没用。
您可以在下载时过滤它们:
wget "$url" -O- | grep -v 'redd.\?it' > hosts
我给自己定了一个 小的 项目,涉及 StevenBlack's host file。我知道他提供了一种使用他的 Python 脚本制作您自己的主机文件的方法,但是我想给自己设定一个挑战。
问题如下:
我有一个获取 Fakenews+Gambling+Social
主机文件的脚本。
不过,我还是想访问 Reddit。更糟糕的是,该文件会不断更新。这意味着我无法删除带有 sed -e '123,456d'
.
我想我已经很接近了。但我不确定,这是命令
cat ./hosts | grep "# Reddit" -A10 | sed -e '1,11d'
虽然它确实删除了 Reddit 条目,但我不知道如何将其重新组合在一起。意思是,使用上面的命令我确实可以过滤掉 Reddit 行,但我不知道如何放回主机文件而不是创建一个空文件。
这是我的第一个post,我很不擅长解释问题。如果有任何需要澄清的地方,就直说吧。另外,英语不是我的第一语言,所以这也无济于事。
编辑:例子
cd /home/myname/Documents/git
wget https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-social/hosts
至此,我有了原始主机文件。现在我想过滤掉 Reddit。我要删除的条目是:
0.0.0.0 reddit.com
0.0.0.0 www.reddit.com
0.0.0.0 i.reddit.com
0.0.0.0 redd.it
问题来了。我不知道如何从主机文件中删除它们,因为行在不断变化。
我的方法是cat ./hosts | grep "# Reddit" -A10 | sed -e '1,11d'
,事后看来这很没用。
您可以在下载时过滤它们:
wget "$url" -O- | grep -v 'redd.\?it' > hosts