清除域列表/删除子域

时间:2019-06-17 12:36:58

标签: csv notepad++ bulk

我有很多域名和子域名混在一起。

google.de
spiegel.de
sub1.google.de
zeit.de
sub1.spiegel.de

编辑器中是否有工具或变通办法(例如Sublime或Notepad ++)可以在删除domain.tld之前获取全部信息?

Notepad ++帮助我从所有其他内容中清除了此列表。但此时此刻已停止。

3 个答案:

答案 0 :(得分:1)

如果您要删除***。something.something,请搜索正则表达式

^.*\..*\..*

然后什么也不做。

编辑:版本2,您要保留部分行(示例中的重复项):

^.*\.(.*\..*)

替换为

$1

()和。取其正则表达式的含义(分组和任何字符)以及\。逃脱了。找到那个角色。如果搜索表达式为$ 1,则获取()的(第一)组中的内容(因为$ 2如果存在则为第二部分...)

答案 1 :(得分:1)

  • Ctrl + H
  • 查找内容:^(?:.+\.)?([^.\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

屏幕截图:

enter image description here

答案 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