AWK 倒计时

AWK 倒计时

我有一个匹配的域列表,并通过 grep 传入,长度各不相同,但都匹配最后三个记录。我试图输出所有不合格的子域。

我有:

awk -F'.' -v OFS='.' '{$(NF-3)=$(NF-2)=$(NF-1)=""; print $0}' 

我的输出在输出上留下了......

谢谢

答案1

在产生输出时,awk遵循 的当前值NF。如果要消除最后三个字段,只需减少NF三个,例如通过NF-=3

awk -F. -v OFS=. '{NF-=3; print $0}'

将其与您的示例输入一起使用:

$ echo $'site.subdomain.xyz.com\nsite.sub.subdomain.xyz.com' | awk -F. -v OFS=. '{NF-=3; print $0}'
site
site.sub

顺便说一句,句号.不是 shell 活动字符。因此,它不需要引用。

答案2

尝试替换它们:

$ awk -F'.' 'sub(FS $(NF-2) FS $(NF-1) FS $NF,"")' <<<"www.cse.iitb.ac.in"
www.cse

我不确定为什么这个方法有效而你的方法无效,但是根据这个unix.com发帖,就是这样。

相关内容