Linux学习十七、正规表达式练习题
- 情境模拟题一:透过 grep 搜寻特殊字串,并配合数据流重导向来处理大量的文件搜寻问题。
- 目标:正确的使用正规表示法;
- 前提:需要了解数据流重导向,以及透过子命令 $(command) 来处理档名的搜寻;
我们简单的以搜寻星号 (*) 来处理底下的任务:
- 利用正规表示法找出系统中含有某些特殊关键字的文件,举例来说,找出在 /etc 底下含有星号 (*) 的文件与内容:
解决的方法必须要搭配万用字节,但是星号本身就是正规表示法的字符,因此需要如此进行:[root@www ~]# grep '\*' /etc/*
你必须要注意的是,在单引号内的星号是正规表示法的字符,但我们要找的是星号,因此需要加上跳脱字符 (\)。但是在 /etc/* 的那个 * 则是 bash 的万用字节! 代表的是文件的档名喔!不过由上述的这个结果中,我们仅能找到 /etc 底下第一层子目录的数据,无法找到次目录的数据, 如果想要连同完整的 /etc 次目录数据,就得要这样做:
[root@www ~]# grep '\*' $(find /etc -type f)
- 但如果文件数量太多呢?如同上述的案例,如果要找的是全系统 (/) 呢?你可以这样做:
[root@www ~]# grep '\*' $(find / -type f)
-bash: /bin/grep: Argument list too long真要命!由於命令列的内容长度是有限制的,因此当搜寻的对象是整个系统时,上述的命令会发生错误。那该如何是好? 此时我们可以透过管线命令以及 xargs 来处理。举例来说,让 grep 每次仅能处理 10 个档名,此时你可以这样想:
- 先用 find 去找出文件;
- 用 xargs 将这些文件每次丢 10 个给 grep 来作为参数处理;
- grep 实际开始搜寻文件内容。
所以整个作法就会变成这样:
[root@www ~]# find / -type f | xargs -n 10 grep '\*'
- 从输出的结果来看,数据量实在非常庞大!那如果我只是想要知道档名而已呢?你可以透过 grep 的功能来找到如下的参数!
[root@www ~]# find / -type f | xargs -n 10 grep -l '\*'
- 情境模拟题二:使用管线命令配合正规表示法创建新命令与新变量。我想要创建一个新的命令名为 myip , 这个命令能够将我系统的 IP 捉出来显示。而我想要有个新变量,变量名为 MYIP ,这个变量可以记录我的 IP 。
处理的方式很简单,我们可以这样试看看:- 首先,我们依据本章内的 ifconfig, sed 与 awk 来取得我们的 IP ,命令为:
[root@www ~]# ifconfig eth0 | grep 'inet addr' | \
> sed 's/^.*inet addr://g'| cut -d ' ' -f1 - 再来,我们可以将此命令利用 alias 指定为 myip 喔!如下所示:
[root@www ~]# alias myip="ifconfig eth0 | grep 'inet addr' | \
> sed 's/^.*inet addr://g'| cut -d ' ' -f1 " - 最终,我们可以透过变量配置来处理 MYIP 喔!
[root@www ~]# MYIP=$( myip )
- 如果每次登陆都要生效,可以将 alias 与 MYIP 的配置那两行,写入你的 ~/.bashrc 即可!
- 首先,我们依据本章内的 ifconfig, sed 与 awk 来取得我们的 IP ,命令为:
简答题部分:
- 我想要知道,在 /etc 底下,只要含有 XYZ 三个字节的任何一个字节的那一行就列出来,要怎样进行?
grep [XYZ] /etc/*
- 将 /etc/termcap 内容取出后,(1)去除开头为 # 的行 (2)去除空白行 (3)取出开头为英文字母的那几行 (4)最终统计总行数该如何进行?
grep -v '^#' /etc/termcap | grep -v '^$' | grep '^[[:alpha:]]' | wc -l
- 或
grep -v '^[#$]' /etc/termcap | grep '^[a-zA-Z]' | wc -l
Linux学习十七、正规表达式练习题的更多相关文章
- linux学习8-正则表达式基础
正则表达式基础 实验介绍 虽然我们这一节的标题是正则表达式,但实际这一节实验只是介绍grep,sed,awk这三个命令,而正则表达式作为这三个命令的一种使用方式(命令输出中可以包含正则表达式).正则表 ...
- Linux学习之RPM包管理-yum管理(十七)
Linux学习之RPM包管理-yum管理 目录 IP地址配置 网络yum源 yum命令 光盘yum源搭建 IP地址配置 IP+子网掩码就可以在局域网(内网)使用. IP+子网掩码+网关+DNS就可以访 ...
- linux学习笔记【转】
学习计时:共24小时 读书:1小时 代码:8小时 作业:3小时 博客:12小时 一.学习目标 1. 能够独立安装Linux操作系统 2. 能够熟练使用Linux系统的基本命令 3. 熟练使用L ...
- Linux学习之CentOS(二十)------vi/vim 按键说明
vi/vim 按键说明 除了上面简易范例的 i, Esc, :wq 之外,其实 vim 还有非常多的按键可以使用. 第一部份:一般模式可用的光标移动.复制粘贴.搜索替换等 移动光标的方法 h 或 向左 ...
- deepin linux 学习笔记(二)——文本编辑器
目录 deepin linux 学习笔记(二)--文本编辑器 前言 nano 小巧的命令行编辑器 通用 编辑 定位 排版 配置 vim 思路独特的超级编辑器 命令模式 插入模式 底线模式(末行模式) ...
- Linux 学习笔记之超详细基础linux命令 Part 10
Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 9----------------- ...
- xiaoluo同志Linux学习之CentOS6.4
小罗同志写的不错,弄个列表过来啊 Linux学习之CentOS(三十六)--FTP服务原理及vsfptd的安装.配置 xiaoluo501395377 2013-06-09 01:04 阅读:56 ...
- (转)Linux最常用指令及快捷键 Linux学习笔记
Linux最常用指令及快捷键 Linux学习笔记 原文:http://blog.csdn.net/yanghongche/article/details/50827478 [摘自 鸟叔的私房菜]--转 ...
- JAVA8学习——深入浅出Lambda表达式(学习过程)
JAVA8学习--深入浅出Lambda表达式(学习过程) lambda表达式: 我们为什么要用lambda表达式 在JAVA中,我们无法将函数作为参数传递给一个方法,也无法声明返回一个函数的方法. 在 ...
随机推荐
- ZigBee技术简介
Zigbee的由来 在蓝牙技术的使用过程中,人们发现蓝牙技术尽管有许多优点,但仍存在许多缺陷.对工业,家庭自动化控制和遥测遥控领域而言,蓝牙技术显得太复杂,功耗大,距离近,组网规模太小等,……而工业自 ...
- xml中,button改变背景颜色方法
在画几个设置界面,用到了button控件,对于button空间的背景色在不同状态下的颜色改变方法,做了一下尝试,发现了两种背景颜色改变的方法,就总结了下. 方法一尝试了好多遍才好,要点在于,在sele ...
- CentoS6.x网络配置
一.配置文件 在CentoS系统里面,跟网络有关的主要配置文件有 1./etc/host.conf # 配置域名服务客户端的控制文件 2./etc/hosts # 配置主机名映射为IP的功能 3 ...
- SSCTF-Final-Re-Play
SSCTF-Final-Re-Play 比赛时花了一晚上搞定了,结果写脚本的时候发送的内容忘记base64加密然后异或8了,手动测试的时候当然是这样做了,写脚本的时候脑抽了.这个题只有forx做出来 ...
- HTML——JavaScript简介
一.简介: JavaScript是个脚本语言,需要有宿主文件,他的宿主文件是HTML文件. JavaScript 是属于 web 的语言,它适用于 PC.笔记本电脑.平板电脑和移动电话. JavaSc ...
- C# 2 运算符 if
运算符: 一.算术运算符: + - * / % ——取余运算 取余运算的应用场景: 1.奇偶数的区分. 2.把数变化到某个范围之内.——彩票生成. 3.判断能否整除.——闰年.平年. int a = ...
- codevs1304 拓扑序计数
题目描述 Description 求一颗有根树/树形图的拓扑序个数. 输入描述 Input Description ...
- socket 通信之select
对于socket 通信,大家很多都用的单线程通信.同时只能监听一个端口,只能响应一个服务,select的方式可以解决多个socket 被连接的问题.一次可以分配多个资源,只要一个连接便可以进行通信.在 ...
- VB execl文件后台代码,基础语法
Excel宏与VBA 程序设计实验指导1 实验1 Excel宏与VBA 语法基础 一.实验目的 1.熟练掌握录制宏.执行宏.加载宏的方法: 2.熟练使用Excel VBA编辑环境,掌握VBA的编辑工具 ...
- excel文件后台代码
很多情况下,我们都需要从Excel中获取数据来创建Word报表文档.首先在Excel中分析数据,然后将分析结果导出到Word文档中发布.技术实现方式:1.创建Word模板,用来作为数据分析结果发布平台 ...