暂无图片
请顶级高手作答, 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
打赏 0
暂无图片
愤怒的蜗牛
2022-10-29
手机用户7665

666

暂无图片 评论
暂无图片 有用 0
打赏 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
打赏 0
李宏达
2022-10-28
Thomas

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

暂无图片 评论
暂无图片 有用 0
打赏 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
打赏 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
打赏 0
Thomas

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

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

666

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
virt-install创建kvm 指定--name参数后生成的kvm名称不对
回答 1
上传附件:virtinstall.log
CPU性能评估指标主要有哪些?
回答 1
已采纳
从整体上来说,因为CPU处理的事务比较多,所以它的性能指标也比较多。常见的指标及其说明如下:1)CPU使用率  CPU使用率是评估CPU性能最直接的指标,它表示每个处理器的整体使用
Linux + Oracle(11g及以上) 内存使用
回答 4
已采纳
1、sga使用的就是shm,用ipcsm可以看到共享内存段的申请情况2、当你开始si/so的时候,说明内存已经不够用了,此时的系统响应巨慢,个人认为swap可以禁用,虽然我也听oracle的建议开了s
linux系统中如何查看Oracle数据库的服务名
回答 1
已采纳
可以看下监听配置文件里写的服务名是什么,或者showparameterservicenames;查看oracle的数据库名、服务名、实例名、SID加一起就乱了;
linux rman 备份集 到win下还原会有坏块,linux 端 validate database 检测,又检测不到坏块,这是为什么?
回答 3
源端是哪,目标端是哪。考虑传输、操作系统编码等情况
Linux文件描述符是 52, 怎么根据52操作对应的文件?
回答 1
lsofd52FD列中的文件描述符cwd值表示应用程序的当前工作目录,可以根据结果中的pid找到对应的文件/proc/$pid/fd/52
linux服务器上哪个发行版的市占率大?
回答 1
rhel,suse
NETSTAT 列出连入local address某端口的连接
回答 3
已采纳
简单说,就是想找出连接到Oracle的客户端的地址对吧,可以这样:netstatn|grepEST|grep1521|awk'{print$5}'|awkF':''{print$1}'如果要去重的话,
如何查看linux的进程是在做什么?
回答 1
可以通过top命令查进程pid,再通过pid查进程名称和目录。1、命令:toptop获取进程PID例:PIDUSER53194omm2、命令:psppid号例:psp53194PIDTTYTIMECM
windows rman到linux set new name 要加上redo001 的日志文件路径?
回答 1
rman不会备份重做日志。你可以把重做日志重命名:11g中需要在mount状态alterdatabaserenamefile'old'to'new';12c开始支持在线重命名