繁体   English   中英

执行ss命令后出现cut命令问题

[英]Trouble with cut command after executing ss command

这是我使用的基本cut语法:

[jay@webserver ~]$ ss -tn
State      Recv-Q Send-Q                                  Local Address:Port                                                 Peer Address:Port              
ESTAB      0      52                                      xxx.xx.xx.xx:xx                                                  xxx.xx.xx.xx:xx              
ESTAB      0      232                                     xxx.xx.xx.xx:xx                                                 xxx.xx.xx.xx:xx     

但是,当我尝试剪切字段时,没有得到适当的输出:

[jay@webserver ~]$ ss -tn | grep -v State | cut -d$'\t' -f3,4
ESTAB      0      36     xxx.xx.xx.xx:xx                 xxx.xx.xx.xx:xx              
ESTAB      0      68     xxx.xx.xx.xx:xx                 xxx.xx.xx.xx:xx  

我唯一能想到的是Delimter不是制表符,但是在那种情况下,我如何获得所需的输出?

ss的输出以空格分隔。 我建议使用awk:

ss -tn | grep -v State | awk '{print $3,$4}'

如果您不介意使用awk ,可以这样做(这也可以保存对grep的调用):

ss -tn | awk '$0!~/State/{print $3, $4}'

请改用awk ,它默认将一个或多个空格字符作为单个定界符进行计数:

ss -tn | grep -v State | awk '{print $3,$4}'

另外,这是跳过第一行的更一般的方法:

ss -tn | tail -n+2 | awk '{print $3,$4}'

这适用于我的机器。 基本上,将8个空格中的每一个都更改为tab,删除其他空格。

ss -tn | unexpand -t 8 | tr $'\t' '|' |tr -d [:blank:] | tr '|' $'\t' | expand -t 1 | cut -f4- -d ' '

或这一个:

ss -tn | expand -t 1 | unexpand -t 8 | cut -f4- -d$'\t'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM