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

比如我有这样一个变量var=`dmesg|grepeth`得到的结果有很多行如下:r81690000:01:00.0:eth0:RTL8168evl/8111evlat0... 比如我有这样一个变量
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并赋值到另一个变量中 如何做
展开
 我来答
百元新
电脑发烧友

推荐于2017-10-09 · 不会修电脑,但是你问我的我都知道
知道大有可为答主
回答量:3万
采纳率:87%
帮助的人:5025万
展开全部

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

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

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

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

wangna20120502
2014-01-22 · 超过29用户采纳过TA的回答
知道答主
回答量:170
采纳率:0%
帮助的人:68.2万
展开全部
是说得到包含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"`
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yxj1124
2014-01-22 · 超过32用户采纳过TA的回答
知道答主
回答量:121
采纳率:0%
帮助的人:86万
展开全部
使用grep
还可结果awk
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式