AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1856386
Accepted
John
John
Asked: 2024-09-21 01:10:14 +0800 CST2024-09-21 01:10:14 +0800 CST 2024-09-21 01:10:14 +0800 CST

打印多个 `lsof' 输出列,同时使用其中一列对唯一值进行排序和计数

  • 772

我想仅打印选定的lsof输出列
$1,$2,$3,$5,$8,$10
,并在打印所有初始输出列时使用uniq -c该列。PID

我在 macOS 上。我正在使用awk, sort,uniq -c

我将我的机器的 IP 地址存储在一个变量中:$ETH_IP

ETH_IP="192.168.10.191" && echo $ETH_IP
192.168.10.191

这是我当前的命令,带有一些格式及其结果:

(lsof -alP -Ts -i @"$ETH_IP" -s TCP:ESTABLISHED,LISTEN,CLOSE_WAIT +c0 |sed 's|\\x20|_|g' |awk '{print $1,$2,$3,$5,$8,$10}' |column -t)                                     
COMMAND                      PID    USER  TYPE  NODE
Mail                         668    501   IPv4  TCP   (ESTABLISHED)
Mail                         668    501   IPv4  TCP   (ESTABLISHED)
Mail                         668    501   IPv4  TCP   (ESTABLISHED)
Mail                         668    501   IPv4  TCP   (ESTABLISHED)
Mail                         668    501   IPv4  TCP   (ESTABLISHED)
Mail                         668    501   IPv4  TCP   (ESTABLISHED)
Mail                         668    501   IPv4  TCP   (ESTABLISHED)
Mail                         668    501   IPv4  TCP   (ESTABLISHED)
Mail                         668    501   IPv4  TCP   (ESTABLISHED)
Mail                         668    501   IPv4  TCP   (ESTABLISHED)
Mail                         668    501   IPv4  TCP   (ESTABLISHED)
Mail                         668    501   IPv4  TCP   (ESTABLISHED)
Mail                         668    501   IPv4  TCP   (ESTABLISHED)
Mail                         668    501   IPv4  TCP   (ESTABLISHED)
Mail                         668    501   IPv4  TCP   (ESTABLISHED)
Mail                         668    501   IPv4  TCP   (ESTABLISHED)
Mail                         668    501   IPv4  TCP   (ESTABLISHED)
Mail                         668    501   IPv4  TCP   (ESTABLISHED)
GitHub_Desktop_Helper        1196   501   IPv4  TCP   (ESTABLISHED)
GitHub_Desktop_Helper        1196   501   IPv4  TCP   (ESTABLISHED)
com.apple.WebKit.Networking  12635  501   IPv4  TCP   (ESTABLISHED)
com.apple.WebKit.Networking  12635  501   IPv4  TCP   (ESTABLISHED)
com.apple.WebKit.Networking  12635  501   IPv4  TCP   (ESTABLISHED)
com.apple.WebKit.Networking  12635  501   IPv4  TCP   (ESTABLISHED)
com.apple.WebKit.Networking  12635  501   IPv4  TCP   (ESTABLISHED)
com.apple.WebKit.Networking  12635  501   IPv4  TCP   (ESTABLISHED)
com.apple.WebKit.Networking  12635  501   IPv4  TCP   (ESTABLISHED)
com.apple.WebKit.Networking  12635  501   IPv4  TCP   (ESTABLISHED)
com.apple.WebKit.Networking  12635  501   IPv4  TCP   (ESTABLISHED)
com.apple.WebKit.Networking  12635  501   IPv4  TCP   (ESTABLISHED)
com.apple.WebKit.Networking  12635  501   IPv4  TCP   (ESTABLISHED)
com.apple.WebKit.Networking  12635  501   IPv4  TCP   (ESTABLISHED)
com.apple.WebKit.Networking  12635  501   IPv4  TCP   (ESTABLISHED)
com.apple.WebKit.Networking  12635  501   IPv4  TCP   (ESTABLISHED)
Dropbox                      74706  501   IPv4  TCP   (ESTABLISHED)
Dropbox                      74706  501   IPv4  TCP   (ESTABLISHED)
Dropbox                      74706  501   IPv4  TCP   (ESTABLISHED)
DropboxFileProvider          74707  501   IPv4  TCP   (ESTABLISHED)
DropboxFileProvider          74707  501   IPv4  TCP   (ESTABLISHED)
DropboxFileProvider          74707  501   IPv4  TCP   (ESTABLISHED)

我想使用类似 的内容| sort | uniq -c | sort -n。
使用第 2 列 (PID) 中的值uniq。
使用awk并保留如上所示的多列格式。
因此,每个进程只有一个列表,行前面列出了原始行的数量。

我正在寻找的模型。

COMMAND                         PID    USER  TYPE  NODE  
18 Mail                         668    501   IPv4  TCP                (ESTABLISHED)
 2 GitHub_Desktop_Helper        1196   501   IPv4  TCP                (ESTABLISHED)
 2 Code_Helper                  1493   501   IPv4  TCP                (ESTABLISHED)
14 com.apple.WebKit.Networking  12635  501   IPv4  TCP                (ESTABLISHED)
 3 Dropbox                      74706  501   IPv4  TCP                (ESTABLISHED)
 2 DropboxFileProvider          74707  501   IPv4  TCP                (ESTABLISHED)    

我面临的问题是 HEADER 行也被计算在内uniq -c

(lsof -alP -Ts -i @"$ETH_IP" -s TCP:ESTABLISHED,LISTEN,CLOSE_WAIT +c0 |sed 's|\\x20|_|g' |awk '{print $1,$2,$3,$5,$8,$10}' |column -t) | sort -k 2,2 | uniq -c | sort  -n -k 3,3
   1 COMMAND                      PID    USER  TYPE  NODE
   3 accountsd                    667    501   IPv4  TCP   (ESTABLISHED)
  16 Mail                         668    501   IPv4  TCP   (ESTABLISHED)
   2 GitHub_Desktop_Helper        1196   501   IPv4  TCP   (ESTABLISHED)
  12 com.apple.WebKit.Networking  12635  501   IPv4  TCP   (ESTABLISHED)
   2 Dropbox                      74706  501   IPv4  TCP   (ESTABLISHED)
   2 DropboxFileProvider          74707  501   IPv4  TCP   (ESTABLISHED)

这个想法来自于这个命令及其输出。

lsof -alP -Ts -i @"$ETH_IP"  -s TCP:ESTABLISHED,LISTEN,CLOSE_WAIT  +c0 | awk 'NR>2{print $1}' | sort | uniq -c | sort -n
   1 CloudTelemetryService
   1 cloudd
   2 Dropbox
   2 DropboxFileProvider
   2 GitHub\x20Desktop\x20Helper
  14 com.apple.WebKit.Networking
  17 Mail

awk
  • 1 1 个回答
  • 24 Views

1 个回答

  • Voted
  1. Best Answer
    John
    2024-09-21T01:35:09+08:002024-09-21T01:35:09+08:00

    这种方法虽然能得到我想要的结果,但不太好用。如果有更好/更快的解决方案,我会很感兴趣。

    ETH_IP="192.168.10.191" && echo $ETH_IP
    192.168.10.191
    
    lsof -alP -Ts -i @"$ETH_IP" -s TCP:ESTABLISHED,LISTEN,CLOSE_WAIT +c0 |sed 's|\\x20|_|g' |awk '{print $1,$2,$3,$5,$8,$10}' \
      | awk 'NR<2{print "#", $0; next}{print $0 |"sort -n -k 2 |uniq -c"}'|column -t
    
    
    #   COMMAND                      PID    USER  TYPE  NODE
    16  Mail                         668    501   IPv4  TCP   (ESTABLISHED)
    2   GitHub_Desktop_Helper        1196   501   IPv4  TCP   (ESTABLISHED)
    2   Code_Helper                  1493   501   IPv4  TCP   (ESTABLISHED)
    8   com.apple.WebKit.Networking  12635  501   IPv4  TCP   (ESTABLISHED)
    2   Dropbox                      74706  501   IPv4  TCP   (ESTABLISHED)
    2   DropboxFileProvider          74707  501   IPv4  TCP   (ESTABLISHED)
    
    • 1

相关问题

  • sed/awk:在第一次出现后删除相似的行

  • 打印一个文件并减去两行

  • 奇怪的 awk 语法:带两个点的数字?

  • 在第二列中打印数字在新行中始终按照第 1 列中指定的次数打印

  • awk 根据变量匹配提取文件中的特定模式

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve