说明:本文为老男孩linux培训某节课前考试试题及答案分享博文内容的一部分,也是独立成题的,你可以点下面地址查看全部的内容信息。
http://oldboy.blog.51cto.com/2561410/791245
特别说明:答题的思路技巧可能比做题本身更重要,这也是老男孩特别教导学生的学习方法。

3.请执行命令取出linux中eth0的IP地址(请用cut,有能力者也可分别用awk,sed命令答)

解答:

某学生的答案:方法新颖。

grep IPADDR /etc/sysconfig/network-scripts/ifcfg-eth0|cut -f 2 -d=

提示:

[root@oldboy ~]# grep IPADDR /etc/sysconfig/network-scripts/ifcfg-eth0|cut -d= -f2

10.0.0.179

[root@oldboy ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0|grep IPADDR|cut -d= -f2

10.0.0.179

法1:cut

[root@oldboy oldboy]# ifconfig eth0|grep 'inet addr'|cut -d ":" -f2|cut -d " " -f1

10.0.0.162

法2:awk

[root@oldboy oldboy]# ifconfig eth0|grep 'inet addr'|awk -F ":" '{print $2}'|awk '{print $1}'

10.0.0.162

说明:这里的awk同上文的cut,但是比cut功能强大的多,-F ":" 中的-F表示指定分割符:,如果不加-F默认就是空格分割符。后面的写法是两个单引号中间是一定一对大括号,然后大括号里是print $n,这个n就是前面使用分割符后的第几个字段,如第一字段就是$1,第二个就是$2,下面再举一例:

[root@oldboy oldboy]# cat test.txt

oldboy zhaoyue xiangpan  #→以空格分,就是3个字段,$1为oldboy ,$2为zhaoyue ,$3为xiangpan

[root@oldboy oldboy]# echo oldboy zhaoyue xiangpan >test.txt

[root@oldboy oldboy]# awk '{print $1}' test.txt

oldboy

[root@oldboy oldboy]# awk '{print $3}' test.txt

xiangpan

提示:有关awk的用法,在老男孩的课程当中会经常用到,希望大家可以积累此命令的用法,可以看到一个学一个,多记案例,而不是记枯燥的文字说明。记得去awk --help和man awk。

法3:sed(正则)

[root@oldboy oldboy]# ifconfig eth0|grep 'inet addr'  #→通过关键字inet addr过滤出需要的行。

inet addr:10.0.0.162  Bcast:10.0.0.255  Mask:255.255.255.0  #→目标是取出10.0.0.162

[root@oldboy oldboy]# ifconfig eth0|grep 'inet addr'|sed 's/^.*addr://g'

10.0.0.162      Bcast:10.0.0.255  Mask:255.255.255.0

#→这里是使用sed的替换语法加正则,^.*addr:表示匹配任意字符的开头,中间也是任意字符,结尾为addr:的字符串,即匹配“         inet addr:”,通过sed 's/^.*addr://g'将其替换为空,也就是下面的结果。

[root@oldboy oldboy]# ifconfig eth0|grep 'inet addr'|sed 's/^.*addr://g'|sed 's/Bcast:.*$//g'

10.0.0.162

#→这里是使用sed的替换语法加正则,Bcast:.*$部分表示匹配以Bcast:开头,以多个任意字符结尾,即匹配“Bcast:10.0.0.255  Mask:255.255.255.0” 通过sed 's/Bcast:.*$//g'将其替换为空,也就是下面的结果。

技巧提示:

处理目标(获取的字符串如上文的ip)前的字符串一般用以..开头(^.*)来匹配开头,匹配的结尾是实际的字符,如:“^.*addr:”表达式匹配“         inet addr:”,

而处理目标后的一般匹配的开头是实际的字符,而结尾是用以...结尾(.*$)来匹配。如:Bcast:.*$部分表示匹配“Bcast:10.0.0.255  Mask:255.255.255.0”。在举一例:取mac地址:

[root@oldboy oldboy]# ifconfig eth0|grep HWaddr

eth0      Link encap:Ethernet  HWaddr 00:0C:29:1D:28:D5

[root@oldboy oldboy]# ifconfig eth0|grep HWaddr|sed 's/^.*HWaddr//g'

00:0C:29:1D:28:D5

#→此题是处理目标前的内容,所以,用“^.*HWaddr匹配“eth0     Link encap:Ethernet  HWaddr”

正则表达式(需本周课后总结):

正则表达式就是处理字符串的方法,以行为单位进行字符串的处理,通过一些特殊符号的辅助,可以让用户轻松搜索/替换某些特定字符串。

知识点摘录说明:

本题涉及的基础正则表达式特殊字符说明:

特殊字符

含义与例子

^word

搜索以字符(word)开头的行。

例:grep -v '^#' oldboy.log

过滤掉以#行首(开始)的行,一般查看配置文件时会用到。

word$

搜索以字符(word)结尾的行。

例:grep -n '!$' oldboy.log

搜索以!(叹号)结尾的行

.(点号)

代表切只能代表“任意一个”字符,“一个”是一个任意字符

例:grep -n 'e.e' oldboy.log

搜索的字符串可以是(eve),(eae),(eee),(e e),但不能仅有(ee)即e与e之间一定且仅有一个字符,而空格符也是字符

*

重复零个或多个的前一个重复字符

例:grep -n 'ess*' oldboy.log

找出含有(es),(ess),(esss)等的字符串,注意,因为(*)可以是0个,所以es       也是符合搜索字符串。另外,因为(*)为重复“前一个字符”的符号,因此,在(*)之前必须要紧接一个重复字符。任意字符则为(.*)

更详细的内容请参考

1)《老男孩linux实战培训教案--linux系统正则表达式精华篇》

2) man grep 然后搜索REGULAR EXPRESSIONS

 

sed拓展内容:

老男孩老师分享有关sed替换功能的小结:

sed替换模型:方框被▇替换成三角▲(会更改文件)

记忆方法:

sed -i 's///g' oldboy.log

sed -i 's###g' oldboy.log

#→观察特点:两边是引号,引号里面的两边分别为s和g,中间是三个一样的字符/或#。

每个字符/或#中间前面的间隔就是被替换的内容,后面的间隔就是替换后的内容。

记 sed 's///g' file #→单引号里两边是s(替换模式)和g(全局匹配替换) 中间是三个斜线,好记吧。

参数意义:

sed -i 's///g' oldboy.log

-i 表示修改文件内容。

g与s联合使用时,表示对当前行全局匹配替换(与单独g意义不同)

s常说的查找并替换,用一个字符串替换成另一个

例子:方框▇三角▲互相替换例子

[oldboy@student ~]$ cat oldboy.log

[oldboy@student ~]$ sed -i 's/▇/▲/g' oldboy.log

[oldboy@student ~]$ cat oldboy.log

[oldboy@student ~]$ sed -i "s/▲/▇/g" oldboy.log

[oldboy@student ~]$ cat oldboy.log

[oldboy@student ~]$ sed -i 's#▇#▲#' oldboy.log

[oldboy@student ~]$ cat oldboy.log

[oldboy@student ~]$ sed -i 's#▇#▲#g' oldboy.log

老男孩老师提示:sed是一个强大的流编辑器命令,在工作中表现出色。尤其是字符替换功能。

案例实践:

[root@oldboy oldboy]# cat a.txt

zhangliang

[root@oldboy oldboy]# sed -e 's/zhangliang/mangyuxi/g' a.txt

mangyuxi

[root@oldboy oldboy]# cat a.txt

zhangliang #→文件内容并未被替换

[root@oldboy oldboy]# sed -i 's/zhangliang/mangyuxi/g' a.txt  #→插入替换修改原文件

[root@oldboy oldboy]# cat a.txt

mangyuxi #→文件内容已被替换

更多更详细内容请参考以下课堂教案:

《老男孩linux实战培训教案-强大的流编辑器sed详解指南》

《老男孩linux实战培训教案--awk详解指南》


老男孩linux运维实战培训联系方式

咨询:QQ: 70271111 357851641 31333741

电话:18911718229

网站地址:http://www.etiantian.org  http://oldboy.cc

blog:http://oldboy.blog.51cto.com

======================================================

欢迎广到运维兄弟一起交流linux/unix网站运维技术!

网站运维交流群:180056518 114580181 45039636

老男孩 QQ:31333741

mail:31333741@qq.com

3.请执行命令取出linux中eth0的IP地址(考试题答案系列)相关推荐

  1. linux同一行分割两个指令的符号,awk -F选项同时指定多个符号做为分割符时遇到空格坑,题目:请执行命令取出 linux 中 eth0 的 IP 地址...

    第三关课前考试题:3.请执行命令取出 linux 中 eth0 的 IP 地址(请用 cut,有能力者也可分别用 awk,sed 命令答) 因为以前有个题讲过awk -F选项可以指定输入分割符,也可以 ...

  2. linux查看ip命令eth0,执行命令取出linux中eth0的IP地址

    方法一:cut命令#ifconfig eth0|grep 'inet addr'|cut -d ":" -f2|cut -d " " -f1 192.168.1 ...

  3. linux 获取ip地址命令行,linux获取ip_shell命令获取linux下eth0的IP地址

    摘要 腾兴网为您分享:shell命令获取linux下eth0的IP地址,我画你猜,万豪金业,调音器,时光机器等软件知识,以及usb2.0webcamera,蚂蚁,粤菜菜谱,怪物闹钟,帮我吧,英文小说, ...

  4. linux shell 域名 ip,Shell脚本一种检查Linux中域名和IP地址所有权信息、检查多个域名的到期日期工具...

    Shell脚本一种检查Linux中域名和IP地址所有权信息.检查多个域名的到期日期工具 jwhois是一个命令行实用程序,可从whois服务器(whois数据库)中获取有关域名所有权的信息. Whoi ...

  5. 【VMware】虚拟机中给Linux设置ip——解决在linux中设置了ip地址,却还是连不上的问题

    大家好,我是好学的小师弟,最近在搭建虚拟机的时候,发现我虽然在linux中设置了ip地址却还是用MobaXterm连不上.后来查询相关文档,解决了该问题 进入虚拟机,点击编辑-虚拟网络编辑器 进入到N ...

  6. linux 怎么设置静态ip,如何在Linux中设置静态IP地址和配置网络

    如果您是Linux系统管理员,那么当您需要在系统上配置网络时,就会出现时间. 与可以使用动态IP地址的台式机不同,在服务器基础架构上,您需要设置静态IP地址(至少在大多数情况下).IP地址 :192. ...

  7. 关于虚拟机linux系统eth0无IP地址的解决办法

    在VM上装了linux的虚拟机之后,可能要用xshell等软件进行文件传输,但是在虚拟机中输入ifconfig -a 命令时,可能会发现eth0没有IP地址的情况. 具体解决办法如下: 1. 查看子网 ...

  8. linux sudo不能执行命令,为什么linux中sudo执行会“找不到命令”

    sudo:command not found 在本地装了个Ubuntu虚拟机,golang环境搭好了并加入PATH环境变量,make编译源码时显示Permission denied,然后sudo执行编 ...

  9. Linux中如何检测IP地址冲突问题

    简介 在Windows系统中,如果本地网络IP地址出现冲突,会出现图标提示,问题比较容易解决.但在Linux系统中,并没有提供相关的功能,如果本地网络采用静态IP地址配置,出现比较奇怪的网络连接问题, ...

最新文章

  1. getComputedStyle currentStyle 获取当前元素所有最终使用的CSS属性值
  2. 广播系统android安全:flag FLAG_RECEIVER_REGISTERED_ONLY的意义
  3. 访问者模式用到了一种双分派的技术——静态分派和动态分派
  4. bzoj 2705: [SDOI2012]Longge的问题——欧拉定理
  5. getsize java_Java ZipEntry getSize()用法及代码示例
  6. rest服务swagger_在Java EE 7上骑骆驼–带有Swagger文档的REST服务
  7. Jedis使用java连接Redis
  8. 【2】二级C语言中那些易错的概念题
  9. 操作系统复习之进程描述和控制
  10. 一步一步理解拖拽Drag(一)
  11. 秩和检验-matlab函数ranksum用法详解
  12. 月光博客:我的知识管理工具列表(强烈推荐收藏)
  13. 虚幻引擎C++开发学习(一)
  14. 微软拼音输入法调整状态栏水平/垂直选项失效解决办法
  15. 【理解】Beta贝塔分布
  16. vue项目静态图片不显示
  17. firefox插件下载失败
  18. [小把戏] 之IBatis.Net系统分页问题的解决
  19. Qt for WinRT
  20. Oracle存储过程打印输出错误信息、行号,快速排查

热门文章

  1. 智能制造深度报告发布:工业机器人、视觉与工业物联/互联网新方向
  2. 中国将对人工智能、云计算等行业独角兽IPO即报即审
  3. 2017全球教育机器人行业研究报告(附PDF下载)
  4. 德勤预测2018年9大科技趋势:AR走进普通用户,直播仍然是王道
  5. 写代码日常 | 每日趣闻
  6. 非 985/211 学校的毕业生,进大厂的机率有多大?
  7. 出去之后,好好做人!华为两年,苦乐参半!
  8. 安谋中国发布“玲珑”i3i5 ISP处理器,剑指何方?
  9. 安装MikTex Portable
  10. KMP- Knuth-Morris-Pratt 字符串查找算法