首页 > 代码库 > Linux_第三关练习题_1,3
Linux_第三关练习题_1,3
1.如何取得/etc/hosts 文件的权限对应的数字内容,如-rw-r--r-- 为 644,要求使用命令取得 644 这样的数字。
解法a:使用sed+awk命令:
[root@xiaoming data]# stat /etc/hosts #查看hosts详细信息,权限信息在第四行。
File: `/etc/hosts‘ Size: 158 Blocks: 8 IO Block: 4096 regular file Device: 803h/2051d Inode: 44 Links: 2 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2017-05-16 00:00:39.304004258 +0800
Modify: 2017-04-26 20:16:54.891279979 +0800 Change: 2017-04-26 20:16:54.892279979 +0800
[root@xiaoming data]# stat /etc/hosts|sed -n ‘4p‘ #使用sed取出第四行 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
[root@xiaoming data]# stat /etc/hosts|sed -n ‘4p‘|awk -F"[(0/]" ‘{print $3}‘
644 #使用awk指定分隔符为‘( 0 /‘;再打印分割后的第三列,完成需求。
解法b:使用awk命令:
[root@xiaoming data]# stat /etc/hosts File: `/etc/hosts‘ Size: 158 Blocks: 8 IO Block: 4096 regular file Device: 803h/2051d Inode: 44 Links: 2 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2017-05-16 00:00:39.304004258 +0800 Modify: 2017-04-26 20:16:54.891279979 +0800 Change: 2017-04-26 20:16:54.892279979 +0800 [root@xiaoming data]# stat /etc/hosts|awk -F"[(0/]" ‘NR==4{print $3}‘ 644 #使用awk指定分割符为‘( 0 /’;再打印出分割后的第四行的第三列内容,完成需求。
解法c:使用sed+正则表达式:
[root@xiaoming data]# stat /etc/hosts|sed -n ‘4p‘ Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) [root@xiaoming data]# stat /etc/hosts|sed -n ‘4p‘|sed -r ‘s#.*s: \(0|/-.*##g‘ 644 #使用正则表达式 .*s: \(0|/.* 匹配目标前后的字段,并把匹配的结果替换为空。
3.请执行命令取出 linux 中 eth0 的 IP 地址。
解法a:使用sed+cut命令
[root@xiaoming data]# ifconfig eth0|sed -n ‘2p‘ inet addr:10.0.0.200 Bcast:10.0.0.255 Mask:255.255.255.0 [root@xiaoming data]# ifconfig eth0|sed -n ‘2p‘|cut -d " " -f12 #指定空格为分隔符 addr:10.0.0.200 [root@xiaoming data]# ifconfig eth0|sed -n ‘2p‘|cut -d " " -f12|cut -d ":" -f2 #指定冒号为分隔符 10.0.0.200
缺点:使用多条管道,性能低下。
解法b:使用awk+正则表达式
[root@xiaoming data]# ifconfig eth0|awk -F"[ :]+" ‘{print $4}‘ #指定分隔符为1个或多个空格或者一个或多个冒号;并打印出目标列。 Ethernet 10.0.0.200 fe80 RUNNING 77689 51859 txqueuelen 8943514 [root@xiaoming data]# ifconfig eth0|awk -F"[ :]+" ‘NR==2{print $4}‘ #定位到目标行。 10.0.0.200
优点:简洁、优雅。
解法c:使用sed+正则表达式
[root@xiaoming data]# ifconfig eth0|sed -n ‘2p‘ inet addr:10.0.0.200 Bcast:10.0.0.255 Mask:255.255.255.0 [root@xiaoming data]# ifconfig eth0|sed -n ‘2p‘|sed -r ‘s#.*r:|B.*##g‘ 10.0.0.200
----------------------------------------分割线---------------------------------
参考:
- 李泳宜-预习视频
- https://deerchao.net/tutorials/regex/regex.htm
Linux_第三关练习题_1,3
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。