我在文件中有一堆dns条目
a1.us.company.com ------ DO NOT PRINT
a2.us.us.company.com ------PRINT------ ("us" is repeated)
a3.eu.a3.compamy.com ------PRINT------ ("a3" is repeated)
a4.tx.a4.tx.company.com -----PRINT------- ("a4" and "tx" is repeated)
awk 'BEGIN {FS="."; OFS="."} {if ($2==$3) print $1"."$2"."$NF}' device_list
awk 'BEGIN {FS="."; OFS="."} {if ($1==$3) print $1"."$2"."$NF}' device_list
我正在使用上面的两个命令。
有人可以给我一个awk命令,列出每行重复的列。 有些名字很疯狂,多达7到8个。分开的领域。
答案 0 :(得分:3)
$ cat file
a1.us.company.com
a2.us.us.company.com
a3.eu.a3.compamy.com
a4.tx.a4.tx.company.com
$ awk -F'.' '{delete seen; for (i=1;i<=NF;i++) if (seen[$i]++) {print; next} }' file
a2.us.us.company.com
a3.eu.a3.compamy.com
a4.tx.a4.tx.company.com
请注意,使用delete seen
特定于GNU-awk,使用其他awks,您可以通过split("",seen)
删除整个数组。
答案 1 :(得分:1)
$ awk -F. '{for(i=1;i<=NF;i++)if(x[$i]++){print;delete x;next}}' file
a2.us.us.company.com
a3.eu.a3.compamy.com
a4.tx.a4.tx.company.com
如果您想在Solaris/SunOS system
上尝试此操作,请将awk
更改为/usr/xpg4/bin/awk
,/usr/xpg6/bin/awk
或nawk