暂无图片
请顶级高手作答, LINUX三剑客
我来答
分享
Thomas
2022-10-28
请顶级高手作答, LINUX三剑客

 cat awk_test
192.1.45.88.1521 45.22.210.1.18362

这里有两列,每列都是IP地址+PORT号,每行都是这种格式。现在想用三剑客处理,去除每列的.port number, 得到如下结果:

 192.1.45.88 45.22.210.1

这个题目很有挑战性,能做出来的都是顶级高手!

我来答
添加附件
收藏
分享
问题补充
8条回答
默认
最新
农夫三拳

你就想看一下,服务器和哪些IP有连接?  grep EST 过滤建立的所有链接,不分端口,grep -v tcp6 去除tcp6干扰

netstat -ant | grep EST |grep -v tcp6 | awk '{print $4,$5}' | awk -F '[./ ]' -v OFS=. '{print $1,$2,$3,$4 " " $6,$7,$8,$9}'



去重

netstat -ant | grep EST |grep -v tcp6 | awk '{print $4,$5}' | awk -F '[./ ]' -v OFS=. '{print $1,$2,$3,$4 " " $6,$7,$8,$9}' | sort -2 |uniq


类似的 不仅ESTABLISH,还包括 各种CLOSE_WAIT,SYNC_WAIT

 netstat -ant | grep tcp4|grep -vE "LISTEN|CLOSED" | awk '{print $4,$5}' | awk -F '[./ ]' -v OFS=. '{print $1,$2,$3,$4 " " $6,$7,$8,$9}'

暂无图片 评论
暂无图片 有用 1
暂无图片
愤怒的蜗牛
2022-10-29
手机用户7665

666

暂无图片 评论
暂无图片 有用 0
农夫三拳

[root@abc ~]# cat a
192.1.45.88.1521 45.22.210.1.18362
[root@abc ~]# cat a|awk -F '[./ ]' -v OFS=. '{print $1,$2,$3,$4 " " $6,$7,$8,$9}'
192.1.45.88 45.22.210.1

话说一般不都是冒号+端口吗 

暂无图片 评论
暂无图片 有用 1
李宏达
2022-10-28
Thomas

哇哈哈,这是AIX下netstat输出的结果,好像是IP+点+端口

暂无图片 评论
暂无图片 有用 0
Thomas

哇哈哈,我在AIX上试了,按原来的写法awk -F '[./ ]' -v OFS=. '{print $1,$2,$3,$4 " " $6,$7,$8,$9}'不行,输出如下:1.2.3.4 1521 9.10.11.13687。将你的代码改为awk -F '[./ ]' -v OFS=. '{print $1,$2,$3,$4 " " $5,$6,$7,$8}'。输出结果是:1.2.3.4 1521 8.9.10.11,因为LOCAL ADDRESS的端口号肯定是1521, 所以我变通了下,写成 awk -F '[./ ]' -v OFS=. '{print $1,$2,$3,$4 " " substr($5,6),$6,$7,$8}'得到了想要的结果,但还是想问下,如果local address那里端口不固定(可能是四位数,也可能是五位数)该如何搞个通用写法呢?

暂无图片 评论
暂无图片 有用 0
Thomas

哇哈哈,不愧是高手!上段回复有误,以此为准。我在AIX上试了,按原来的写法awk -F '[./ ]' -v OFS=. '{print $1,$2,$3,$4 " " $6,$7,$8,$9}'不行,输出如下:1.2.3.4  9.10.11.13687。将你的代码改为awk -F '[./ ]' -v OFS=. '{print $1,$2,$3,$4 " " $5,$6,$7,$8}'。输出结果是:1.2.3.4 1521 8.9.10.11,因为LOCAL ADDRESS的端口号肯定是1521, 所以我变通了下,写成 awk -F '[./ ]' -v OFS=. '{print $1,$2,$3,$4 " " substr($5,6),$6,$7,$8}'得到了想要的结果,但还是想问下,如果local address那里端口不固定(可能是四位数,也可能是五位数)该如何搞个通用写法呢?

暂无图片 评论
暂无图片 有用 0
Thomas

补充下,|awk前的命令如下: netstat -ant | grep 1521 |awk '{print $4" "$5}' 或 netstat -ant | grep 1521 |awk '{print $4,$5}', 两个命令都出现如上文情况。 

暂无图片 评论
暂无图片 有用 0
永远在路上

666

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏