清除域列表/删除子域
clearing a list of domains / remove subdomains
我有一个很大的域列表,其中混有子域。
google.de
spiegel.de
sub1.google.de
zeit.de
sub1.spiegel.de
编辑器(例如 Sublime 或 Notepad++)中是否有工具或解决方法可以在 domain.tld 删除之前获取所有内容?
Notepad++ 帮我清除了这个列表中的所有其他内容,这些内容一直在里面。但是此时a停了下来。
如果您的意思是删除 ***.something.something,请搜索正则表达式
^.*\..*\..*
什么都不替换。
编辑:第 2 版,您希望保留部分行(在您的示例中重复):
^.*\.(.*\..*)
替换为
() 和 .取其正则表达式的含义(分组和任何字符),以及 \.逃脱 .找到那个角色。如果搜索表达式,$1 获取 () 的(第一)组内的内容(因为如果存在,$2 将获取第二部分...)
如果您有 awk
命令行工具。
awk 'BEGIN{FS="."} NF==3{[=10=]=substr([=10=], length()+2)}1' input.txt
输入文件input.txt
:
google.de
spiegel.de
sub1.google.de
zeit.de
sub1.spiegel.de
输出:
google.de
spiegel.de
google.de
zeit.de
spiegel.de
希望这就是你想要的。
脚本解释:
BEGIN{FS="."} # set input line field separator to .
NF==3{[=13=] = substr([=13=], length()+2)} # if input line has 3 fields, Remove the first field
1 # output modified line
对于超过 3 个域限定符的更一般情况。
BEGIN{FS=OFS="."} # set input line field separator to .
NF > 2{ # if there are more than 2 input fields
while(NF > 2) [=14=] =substr([=14=], length()+2); #remove the first field from input line
}
1 # output modified line
- Ctrl+H
- 查找内容:
^(?:.+\.)?([^.\r\n]+\.[^.\r\n]+)$
- 替换为:
</code></li>
<li><em>选中环绕</em></li>
<li><em>检查正则表达式</em></li>
<li><em>取消勾选<code>. matches newline
- 全部替换
解释:
^ # beginning of line
(?: # start non capture group
.+ # 1 or more any character but newline
\. # a dot
)? # end group, optional
( # start group 1
[^.\r\n]+ # 1 or more non dot, non linebreak
\. # a dot
[^.\r\n]+ # 1 or more non dot, non linebreak
) # end group
$ # end of line
给定示例的结果:
google.de
spiegel.de
google.de
zeit.de
spiegel.de
屏幕截图:
我有一个很大的域列表,其中混有子域。
google.de
spiegel.de
sub1.google.de
zeit.de
sub1.spiegel.de
编辑器(例如 Sublime 或 Notepad++)中是否有工具或解决方法可以在 domain.tld 删除之前获取所有内容?
Notepad++ 帮我清除了这个列表中的所有其他内容,这些内容一直在里面。但是此时a停了下来。
如果您的意思是删除 ***.something.something,请搜索正则表达式
^.*\..*\..*
什么都不替换。
编辑:第 2 版,您希望保留部分行(在您的示例中重复):
^.*\.(.*\..*)
替换为
() 和 .取其正则表达式的含义(分组和任何字符),以及 \.逃脱 .找到那个角色。如果搜索表达式,$1 获取 () 的(第一)组内的内容(因为如果存在,$2 将获取第二部分...)
如果您有 awk
命令行工具。
awk 'BEGIN{FS="."} NF==3{[=10=]=substr([=10=], length()+2)}1' input.txt
输入文件input.txt
:
google.de
spiegel.de
sub1.google.de
zeit.de
sub1.spiegel.de
输出:
google.de
spiegel.de
google.de
zeit.de
spiegel.de
希望这就是你想要的。
脚本解释:
BEGIN{FS="."} # set input line field separator to .
NF==3{[=13=] = substr([=13=], length()+2)} # if input line has 3 fields, Remove the first field
1 # output modified line
对于超过 3 个域限定符的更一般情况。
BEGIN{FS=OFS="."} # set input line field separator to .
NF > 2{ # if there are more than 2 input fields
while(NF > 2) [=14=] =substr([=14=], length()+2); #remove the first field from input line
}
1 # output modified line
- Ctrl+H
- 查找内容:
^(?:.+\.)?([^.\r\n]+\.[^.\r\n]+)$
- 替换为:
</code></li> <li><em>选中环绕</em></li> <li><em>检查正则表达式</em></li> <li><em>取消勾选<code>. matches newline
- 全部替换
解释:
^ # beginning of line
(?: # start non capture group
.+ # 1 or more any character but newline
\. # a dot
)? # end group, optional
( # start group 1
[^.\r\n]+ # 1 or more non dot, non linebreak
\. # a dot
[^.\r\n]+ # 1 or more non dot, non linebreak
) # end group
$ # end of line
给定示例的结果:
google.de
spiegel.de
google.de
zeit.de
spiegel.de
屏幕截图: