我有很多域名和子域名混在一起。
google.de
spiegel.de
sub1.google.de
zeit.de
sub1.spiegel.de
编辑器中是否有工具或变通办法(例如Sublime或Notepad ++)可以在删除domain.tld之前获取全部信息?
Notepad ++帮助我从所有其他内容中清除了此列表。但此时此刻已停止。
答案 0 :(得分:1)
如果您要删除***。something.something,请搜索正则表达式
^.*\..*\..*
然后什么也不做。
编辑:版本2,您要保留部分行(示例中的重复项):
^.*\.(.*\..*)
替换为
$1
()和。取其正则表达式的含义(分组和任何字符)以及\。逃脱了。找到那个角色。如果搜索表达式为$ 1,则获取()的(第一)组中的内容(因为$ 2如果存在则为第二部分...)
答案 1 :(得分:1)
^(?:.+\.)?([^.\r\n]+\.[^.\r\n]+)$
$1
. 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
屏幕截图:
答案 2 :(得分:0)
如果您有awk
命令行工具。
awk 'BEGIN{FS="."} NF==3{$0=substr($0, length($1)+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{$0 = substr($0, length($1)+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) $0 =substr($0, length($1)+2); #remove the first field from input line
}
1 # output modified line