我需要的
我有一个这样的域列表:
a.example.com
b.foo.com
a.b.bar.com
我只希望输出获取二级域而不是其他域,即没有 3 级或更高级别。这就是我从上面的示例列表中寻找的内容:
example.com
foo.com
bar.com
我试过的
我试过使用sed
,awk
和cut
如下:
sed
cat domains.txt | sed 's/\.$//g'
cat domains.txt | sed -r 's/^(.*)_/\1\\/; s/.$//g' # this removes the last character for some reason
awk
awk '{ sub(/\.$/, ""); print $NF }' domains.txt
cat domains.txt | awk -F\. '{print $1,$2}' | tr ' ' '.' # won't work since there are 4th level domains
切
cat domains.txt | cut -d '.' -f[field] # won't work since there are 4th level domains
如果您需要从右侧开始匹配,您可以使用结束锚点
$
将模式固定到行尾。grep:
赛德:
awk
NF
有一个名为保存当前记录的字段数的预定义变量。您可以将NF
变量与字段说明符结合起来$
引用该值。awk:
您还可以反转命令的文本,例如:
read
或cut
纯粹从左到右读取。转,切:
仅重击示例: