1.做这种字符串截取,一定要先弄清楚,哪些是变化量,哪些是不变量。

2.切割,当然是用awk来进行。

如果用cut做切割,关键字只能是单个字符char,而awk的关键字可以为字符串string。

这种能够直接切割的地方,用正则是在浪费CPU、内存,认为地增加处理时间。

3.awk切割的用法:

awk -F【关键字】 '{print $n}'

注意,-F与关键字之间无空格,关键字与【'】之间有一个空格,print与【$】之间有空格。如果关键字是空格,或者特殊字符,尝试在它左右两侧添加双引号或单引号。

切分后,n是下标,下标从1开始。

4.如果只有IP和端口是变化的,其它是不变的,那么,对于原始字符串:

echo "Connections: authenticated: 10.0.115.172::56498, as admin (Full access)"

切分,按照先整体后部分的原则,先分割冒号与空格:

1->【Connections】

2->【authenticated】

3->【10.0.115.172::56498, as admin (Full access)】

切割命令:

awk -F": " '{print $3}'

切割结果:

[root@localhost ~]# echo "Connections: authenticated: 10.0.115.172::56498, as admin (Full access)" | awk -F": " '{print $3}'

10.0.115.172::56498, as admin (Full access)

然后再把3->【10.0.115.172::56498, as admin (Full access)】按逗号与空格分割:

1->【10.0.115.172::56498】

2->【as admin (Full access)】

1即为所求。

切割命令:

awk -F", " '{print $1}'

切割结果:

[root@localhost ~]# echo "Connections: authenticated: 10.0.115.172::56498, as admin (Full access)" | awk -F": " '{print $3}' | awk -F", " '{print $1}'

10.0.115.172::56498

测试平台:RHEL5.x、CentOS 5.x

打完这么多【切割】二字,只觉得JJ凉飕飕的。

Logo

更多推荐