Shell下获取一个字符串中的多段字符

2019年11月30日

这个教程是卡饭论坛上一个网友的问题,原文件地址:https://bbs.kafan.cn/thread-2160330-1-1.html

关键词:shell分割文本 shell截取文本 shell载取字符串 awk截取字符串

原创内容,转载请注明出处:https://www.myzhenai.com.cn/post/3035.html

其实他第一楼的问题使用转义符号“\”是就可以实现的,但是好像他要实现的功能并不在于转义符,更多像是要在一个字符串里截取一段或多段指定的字符。我原来好像写过一个截取字符的教程。

Linux Shell截取字符窜教程:https://www.myzhenai.com.cn/post/2254.html

看了关天,我好像看懂了一些这网友的问题所在,好像他是要在以下这行命令中取出 Max rtt Min rtt Avg rtt这三段字符,但是在使用awk的时候是有些受限制的。

sh -c  ' echo "Max rtt: 201.030ms | Min rtt: 201.030ms | Avg rtt: 201.030ms"|awk -F ":" "{print $1}" '

 

刚开始,我的思路是用awk的变量来操作,但是经过测试,使用awk变量还是比较麻烦,倒不如使用tr命令配合awk来得快速简单一些。

echo "Max rtt: 201.030ms|Min rtt: 201.030ms|Avg rtt: 201.030ms|"|awk -F "|" '{ print $1,$2,$3 }'|awk -F ":" '{ print $1,$2,$3 }'
#将字符串分为三段,并用|做为分隔符来取出|之前的字符串,但是得到的是一整串的字符串,再想往下取就有点麻烦了。

 

最方便的是使用tr命令来分割文本,然后将分割后的文本做为一个单独的字符串来进行截取。

echo "Max rtt: 201.030ms|Min rtt: 201.030ms|Avg rtt: 201.030ms"|tr "|" "\n"|awk -F ":" '{ print $1}'

 


sicnature ---------------------------------------------------------------------
Your current IP address is: 44.221.46.132
Your IP address location: 美国弗吉尼亚阿什本
Your IP address country and region: 美国 美国
Your current browser is:
Your current system is:
Original content, please indicate the source:
同福客栈论坛 | 蟒蛇科普海南乡情论坛 | JiaYu Blog
sicnature ---------------------------------------------------------------------
Welcome to reprint. Please indicate the source http://www.myzhenai.com/post/3035.html

没有评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注