Linux的shell编程中,如何将一段字符串进行截取?

比如我有这样一个变量
var=`dmesg | grep eth`
得到的结果有很多行 如下:
r8169 0000:01:00.0: eth0: RTL8168evl/8111evl at 0xf8a6c000, 00:e0:b4:08:4c:cf, XID 0c900800 IRQ 27
r8169 0000:01:00.0: eth0: jumbo features [frames: 9200 bytes, tx checksumming: ko]
r8169 0000:02:00.0: eth1: RTL8168evl/8111evl at 0xf8a70000, 00:e0:b4:08:4c:d0, XID 0c900800 IRQ 28
r8169 0000:02:00.0: eth1: jumbo features [frames: 9200 bytes, tx checksumming: ko]
r8169 0000:01:00.0: eth0: unable to load firmware patch rtl_nic/rtl8168e-3.fw (-2)
我只想得到00:e0:b4:08:4c:cf并赋值到另一个变量中 如何做

简单介绍下Shell字符串截取的详细方法,如截取指定字数、按指定的字符串截取、按指定要求分割。

一、Linux shell 截取字符变量的前8位,有方法如下:

二、按指定的字符串截取
1、第一种方法:
${varible##*string} 从左向右截取最后一个string后的字符串
${varible#*string}从左向右截取第一个string后的字符串
${varible%%string*}从右向左截取最后一个string后的字符串
${varible%string*}从右向左截取第一个string后的字符串
“*”只是一个通配符可以不要

三、按照指定要求分割:
比如获取后缀名

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-22
是说得到包含00:e0:b4:08:4c:cf的行吗
newvar=`echo $var | grep "00:e0:b4:08:4c:cf"`
如果只想得到00:e0:b4:08:4c:cf,grep加-o参数
newvar=`echo $var | grep -o "00:e0:b4:08:4c:cf"`
第2个回答  2014-01-22
使用grep
还可结果awk本回答被提问者采纳
相似回答