示例字符串:
Connections: authenticated: 10.0.115.172::56498, as admin (Full access)
想要的返回内容为:
10.0.115.172::56498
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
自己试着写出来了,可以解决场景需求 @wusisu
前后不变的话
就好了
比如
正则的话,感觉用awk好麻烦。
给一个python的解答吧,反正都基本是标配的脚本语言了。
echo 'Connections: authenticated: 10.0.115.172::56498, as admin (Full access)' | cut -d ' ' -f 3 | cut -d , -f 11.做这种字符串截取,一定要先弄清楚,哪些是变化量,哪些是不变量。
2.切割,当然是用awk来进行。
如果用cut做切割,关键字只能是单个字符char,而awk的关键字可以为字符串string。
这种能够直接切割的地方,用正则是在浪费CPU、内存,认为地增加处理时间。
3.awk切割的用法:
注意,-F与关键字之间无空格,关键字与【'】之间有一个空格,print与【$】之间有空格。如果关键字是空格,或者特殊字符,尝试在它左右两侧添加双引号或单引号。
切分后,n是下标,下标从1开始。
4.如果只有IP和端口是变化的,其它是不变的,那么,对于原始字符串:
切分,按照先整体后部分的原则,先分割冒号与空格:
切割命令:
切割结果:
然后再把3->【10.0.115.172::56498, as admin (Full access)】按逗号与空格分割:
1即为所求。
切割命令:
切割结果:
测试平台:RHEL5.x、CentOS 5.x
打完这么多【切割】二字,只觉得JJ凉飕飕的。
echo "Connections: authenticated: 10.0.115.172::56498, as admin (Full access)" | cut -d , -f 1 | cut -d ' ' -f3