【Linux】Shell与文本处理实训

目录

实训1:vim编辑器的应用 

(1)在当前目录中,通过vi(m)命令新建wol文件。

(2)进入vi编辑器后,通过按字母i进入insert模式。输人一行文字“I am a student!"。

(3)按ESC.退回命令模式,输人“: wq",保存退出。

(4)拷贝/etc/man.config文件到当前目录。

(5)用vi打开它,请问现在是在什么模式?

(6)将光标移动到行尾,再将光标移动到行首。

(7)将光标移动到21行,删除5行。

(8)撤销刚才的操作。

(9)将光标移动到11行,复制10行。

(10)将复制的内容粘贴到文章末尾。

(11)在vi中设定行号,移动到第58行。

(12)移动到第一行,并且向下查找bzip2这个字符串,请问它在第几行?

(13)移动到第5行将man字符串(全部)改为大写MAN字符串?

(14)修改完之后,突然反悔了,要全部复原。

(15)将这个文件另存成一个man. test. config的文件。

(16)保存退出。

(17)使用vi新建文档Hello. java。

(18)进人编辑模式输人源代码。

(19) 保存退出。

实训2:重定向、管道

(1) 用ls命令显示当前目录的文件列表。

(2)使用输出重定向,把ll命令在终端上显示的当前目录中的文件列表重定向到list中去。

(3)查看文件list中的内容,往意在列表中会多出一个文件list,其长度为0,这说明Shell是首先创建了个空文件,然后再运行Is 命令。

(4)再次使用输出重定向,把1s命令在终端上显示的当前目录中的文件列表重定向到文件list中去。这次使用管道符号>>进行重定向。

(5)查看文件list的内容,注意其中两行list文件的信息中文件大小的区别。

(6)使用echo命令,在屏幕上显示内容为“happy”的字符串:

(7)使用echo命令,将“happy”的字符串写人network文件中。

(8)将1s/etc/xl命令执行错误重定向到home目录下的cw文件中。

(9)使用cat命令将list文件和network文件合并成一个文件list_network

(10)使用tr命令将network文件中的h字母转化成大写的H字母。

(11)使用tr命令將network文件中的h字母转化成大写的H字母,并写人networkl文件中去。

(12)练习使用"cat>network2<< !".

(13)利用管道和grep命令,在上面建立的文件list中查找字符中list.

(14)利用管道和wc命令,计算文件list中的行数、单词数和字符数。

(15)将/et/passwd 文件内容重定向到/home目录下的pd文件中。

实训3: grep及正则表达式

(1)将/etc/passwd 中有出现root 的行取出来,并以高亮显示。

(2)将/ete/ passwd中有出现root的行取出来,同时显示这些行在etc/ passwd的行号。

(3)将/etc/ passwd中没有出现root的行取出来。

(4)将/etc/passwd 中没有出现root和nologin的行取出来。

(5)将/etc/passwd 中出现“root" 或"mail"的行。

实训4:正则表达式

(1)匹配行首。

①查看以字符“a”开头的行。

②查看以字符串“abc"开头的行。

(2) $匹配行尾。

①查看以字符串“33”结尾的行。

②查看以字符“3”结尾的行。

(3) []:匹配[]内的字符或者关系。

①查看包含字符“1” 或者包含字符“2”包含字符“3”的行。

②查看包含字符test或taste的行。

(4).:匹配任意的单字符。

①查找任意字符开头,然后第二个字符为3。

②查找任意两个字符开头,然后第三个字符为3。

(5)¥:紧跟一个单字符,表示匹配0个或者多个此字符。

①匹配字符“3”0次或者多次。

②匹配字符串“23",但是3被匹配的次数≥0。

(6) \ :用来屏蔽元字符的特殊含义。

①在字符串“365.398”中,查找“.”这个字符,而不是任意单字符。

(7)搜索到有oo的行,但不想要oo前面有g.

(8)搜寻包含特定字符串“the" 的行。

(9)反向搜寻特定字符串"the"(即不包含“the")。

(10)取得任意大小写"the"的这个字符串。

(11)搜索有oo的字符时,则可以使用。

(12)搜索oo时不想搜到oo前面有g的话,可以利用反向选择[^]来达成,

(13)搜索oo前面不想有小写字符。

(14)显示行首为"the"的字符串。

(15)显示行首是小写字符。

(16)显示行尾为点的那行

(17)显示5~9行数据。

(18)显示空白行。

(19)找出g?? d字符串,起头g结束d的四个字符串。

(20)o*代表空字符(就是有没有字符都可以)或者一个到N个o字符,所以grep-n ‘o*’regular _ express. txt就会把所有行全部打印出来,

(21) oo*代表o+空字符或者一个到N个o字符,所以grep 一n 'oo*'regular _express. txt就会把o, 00,000 等的行全部打印出来。

(22)“goo*g"代表gog, goog. gooog等。

(23)找出含g...g字符串的行。

(24)找出含有数字的行。

(25)找出含两个o的字符串。

(26)找出g后含2~5个o然后以g结尾的字符串。

(27)找出g后含2以上的o然后以g结尾的字符串。


实训1:vim编辑器的应用 

(1)在当前目录中,通过vi(m)命令新建wol文件。

(2)进入vi编辑器后,通过按字母i进入insert模式。输人一行文字“I am a student!"。

(3)按ESC.退回命令模式,输人“: wq",保存退出。

(4)拷贝/etc/man.config文件到当前目录。

(5)用vi打开它,请问现在是在什么模式?

当前是命令模式

(6)将光标移动到行尾,再将光标移动到行首。

按“$”移动至行尾,按“0”或者“^”跳转至行首

(7)将光标移动到21行,删除5行。

按下“21G”即可跳转到第二十一行,再用“5dd”删除5行

(8)撤销刚才的操作。

在命令模式下按下“u”即可撤销上一步的操作

(9)将光标移动到11行,复制10行。

按下“11G”跳转到第11行,再用“10yy”复制10行

(10)将复制的内容粘贴到文章末尾。

按下“G”将光标移动至文件末尾行首,按下“$”跳转到行尾,再用“p”粘贴至文章末尾

(11)在vi中设定行号,移动到第58行。

由于上面方便查看行数已经设定过行号了,命令为“:set number”(在命令模式下启动末行模式,设置set number)

此处我先退出vim编辑器,重新进入后用“:set number(或:set nu)”设置行号(或用“:set nonumber”取消行号,再重新进行设置)。再用“58G”移动到第58行

(12)移动到第一行,并且向下查找bzip2这个字符串,请问它在第几行?

按下“gg”或者“1G”即可将光标移动到第1行,用“/bzip2”向下查找,结果显示该字符串在第13行

(13)移动到第5行将man字符串(全部)改为大写MAN字符串?

按下“5G”跳转到第五行,输入“:s/man/MAN/g”即可将该行全部的“man”修改成“MAN”

(14)修改完之后,突然反悔了,要全部复原。

强制退出“:q!”,不保存修改的内容。即恢复到最初状态,完成全部复原。

(15)将这个文件另存成一个man. test. config的文件。

利用“:w filename”命令进行实现,即为“:w man.test.config”

(16)保存退出。

(17)使用vi新建文档Hello. java。

(18)进人编辑模式输人源代码。

public class hello

public static void main (Srting [] args)

System. out. println (“Hello world!");

按下“a”(或者“i”、“o”)即可从命令模式进入输入模式并且输入代码

(19) 保存退出。

当前在输入模式中,按下“Esc”键退回到命令模式下,再按“:wq”则进入末行模式且保存退出

实训2:重定向、管道

(1) 用ls命令显示当前目录的文件列表。

(2)使用输出重定向,把ll命令在终端上显示的当前目录中的文件列表重定向到list中去。

(3)查看文件list中的内容,往意在列表中会多出一个文件list,其长度为0,这说明Shell是首先创建了个空文件,然后再运行Is 命令。

(4)再次使用输出重定向,把1s命令在终端上显示的当前目录中的文件列表重定向到文件list中去。这次使用管道符号>>进行重定向。

(5)查看文件list的内容,注意其中两行list文件的信息中文件大小的区别。

(6)使用echo命令,在屏幕上显示内容为“happy”的字符串:

(7)使用echo命令,将“happy”的字符串写人network文件中。

(8)将1s/etc/xl命令执行错误重定向到home目录下的cw文件中。

(9)使用cat命令将list文件和network文件合并成一个文件list_network

(10)使用tr命令将network文件中的h字母转化成大写的H字母。

(11)使用tr命令將network文件中的h字母转化成大写的H字母,并写人networkl文件中去。

(12)练习使用"cat>network2<< !".

(13)利用管道和grep命令,在上面建立的文件list中查找字符中list.

(14)利用管道和wc命令,计算文件list中的行数、单词数和字符数。

(15)将/et/passwd 文件内容重定向到/home目录下的pd文件中。

实训3: grep及正则表达式

(1)将/etc/passwd 中有出现root 的行取出来,并以高亮显示。

(2)将/ete/ passwd中有出现root的行取出来,同时显示这些行在etc/ passwd的行号。

(3)将/etc/ passwd中没有出现root的行取出来。

(4)将/etc/passwd 中没有出现root和nologin的行取出来。

(5)将/etc/passwd 中出现“root" 或"mail"的行。

实训4:正则表达式

(1)匹配行首。

①查看以字符“a”开头的行。

②查看以字符串“abc"开头的行。

(2) $匹配行尾。

注:这个题目应该给错了,应该是匹配行尾而非开头

①查看以字符串“33”结尾的行。

②查看以字符“3”结尾的行。

(3) []:匹配[]内的字符或者关系。

①查看包含字符“1” 或者包含字符“2”包含字符“3”的行。

②查看包含字符test或taste的行。

(4).:匹配任意的单字符。

①查找任意字符开头,然后第二个字符为3。

②查找任意两个字符开头,然后第三个字符为3。

(5)*:紧跟一个单字符,表示匹配0个或者多个此字符。

①匹配字符“3”0次或者多次。

②匹配字符串“23",但是3被匹配的次数≥0。

(6) \ :用来屏蔽元字符的特殊含义。

①在字符串“365.398”中,查找“.”这个字符,而不是任意单字符。

(7)搜索到有oo的行,但不想要oo前面有g.

(8)搜寻包含特定字符串“the" 的行。

(9)反向搜寻特定字符串"the"(即不包含“the")。

(10)取得任意大小写"the"的这个字符串。

(11)搜索有oo的字符时,则可以使用。

(12)搜索oo时不想搜到oo前面有g的话,可以利用反向选择[^]来达成,

(13)搜索oo前面不想有小写字符。

(14)显示行首为"the"的字符串。

(15)显示行首是小写字符。

(16)显示行尾为点的那行

(17)显示5~9行数据。

(18)显示空白行。

(19)找出g?? d字符串,起头g结束d的四个字符串。

(20)o*代表空字符(就是有没有字符都可以)或者一个到N个o字符,所以grep-n ‘o*’regular _ express. txt就会把所有行全部打印出来,

(21) oo*代表o+空字符或者一个到N个o字符,所以grep 一n 'oo*'regular _express. txt就会把o, 00,000 等的行全部打印出来。

(22)“goo*g"代表gog, goog. gooog等。

(23)找出含g...g字符串的行。

(24)找出含有数字的行。

(25)找出含两个o的字符串。

(26)找出g后含2~5个o然后以g结尾的字符串。

(27)找出g后含2以上的o然后以g结尾的字符串。

  • 70
    点赞
  • 363
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
前言 10 场景说明 11 基础知识简介 14 Linux 14 Linux产生与发展 14 Linux特点和优势 15 Shell 16 Shell脚本语言与编译型语言的差异 17 Shell分类 18 Shell使用 19 项目一 初识Linux Shell 20 [学习目标] 20 任务1.1 构建开发环境 22 任务1.2 vi/vim编辑器 33 1.2.1 vim使用实例 34 1.2.2 vim按键说明 36 任务1.3 Shell常用命令 41 1.3.1 基础命令 41 1.3.2 文件、目录操作命令 42 1.3.3 系统管理命令 52 1.3.4 关机/重启/退出 53 1.3.5 安装操作命令 53 1.3.6 用户操作命令 54 1.3.7 网络下载命令 55 1.3.8 服务操作命令 57 任务1.4 Shell脚本 58 1.4.1 第一个shell脚本:Hello World 58 1.4.2 脚本介绍 59 1.4.3 shell程序结构 59 1.4.4 shell脚本运行 60 任务1.5 Shell案例:打印有色彩的文本 61 任务1.6 Shell案例:图案打印 62 练习(每题10分,共计100分) 66 项目二 Shell变量 67 [学习目标] 67 任务2.1 Linux环境变量 68 2.1.1 查看环境变量 69 任务2.2 Shell变量 70 2.2.1 定义变量 70 2.2.2 使用变量 70 2.2.3 只读变量 71 2.2.4 删除变量 72 任务2.3 特殊符号 72 任务2.4 Shell案例:显示系统信息: 78 练习(每题12.5分,共计100分) 80 项目三 Shell传递参数 81 [学习目标] 81 任务3.1 Shell传递参数 82 任务3.2 Shell案例:参数比较 85 任务3.3Shell案例:通过参数描述变量 86 练习(前两题每题30分,第三题40分,共计100分) 87 项目四 Shell数组 89 [学习目标] 89 任务4.1 定义数组 90 任务4.2 使用数组 90 任务4.3 Shell案例:数组的使用 92 练习(100分) 95 项目五 Shell运算符 96 [学习目标] 96 任务5.1 Shell基本运算符 97 5.1.1 运算符 97 5.1.2 算术运算符 97 5.1.3 关系运算符 99 5.1.4 布尔运算符 101 5.1.5 逻辑运算符 103 5.1.6 字符串运算符 104 5.1.7 文件测试运算符 106 任务5.2 Shell案例:计算器 109 练习(每题25分,共计100分) 111 项目六 Shell命令输出 112 [学习目标] 112 任务6.1 Shell echo命令 113 任务6.2 Shell printf命令 116 任务6.3 Shell test命令 119 任务6.4 Shell案例:查看系统资源使用情况 122 练习(每题20分,共计100分) 125 项目七 Shell流程控制 126 [学习目标] 126 任务7.1 Shell流程控制 127 7.1.1 if 判断语句 127 7.1.2 for 循环语句 130 7.1.3 while 循环语句 131 7.1.4 until 循环语句 134 7.1.5 case多选语句 135 7.1.6 跳出循环体 137 任务7.2 Shell案例:重复执行命令和简单计算器 139 任务7.3 Shell案例:使用三种循环结构打印九九乘法表 141 练习(前两题每题30分,第三题40分,共计100分) 144 项目八 Shell函数 146 [学习目标] 146 任务8.1 Shell函数 147 8.1.1 Shell函数的定义 147 8.1.2 函数参数 150 任务8.2 Shell案例 151 8.2.1 指定多个文件的行数 151 8.2.2 当前目录的所有文件 153 练习(每题50分,共计100分) 156 项目九 Shell输入/输出重定向 158 [学习目标] 158 任务9.1 linux文件描述符 159 任务9.2 Shell输入/输出重定向 160 9.2.1 输出重定向 160 9.2.2 输入重定向 163 9.2.3 重定向深入讲解 164 任务9.2 Shell案例:通过重定向测试批量添加ip 166 练习(每题25分,共计100分) 169 项目十 Shell文件包含 171 [学习目标] 171 任务10.1 Shell文件包含 172 任务10.2 Shell案例:查找最大文件 172 练习(每题50分,共计100分) 174 项目十一 Shell文本处理命令 175 [学习目标] 175 任务11.1 学习和使用grep 176 任务11.2 学习和使用sed 179 任务11.3 学习和使用cut 183 任务11.4 学习和使用awk 185 练习(第一题10分,第2-7每题15分,共计100分) 188 项目十二 Shell的调试 189 [学习目标] 189 任务12.1 使用trap命令 190 任务12.2 使用tee命令 192 任务12.3 使用“调试钩子” 193 任务12.4 使用Shell的执行选项 194 练习(每题50分,共计100分) 196 项目十三 Shell综合案例一(lnmp+wordpress) 197 [学习目标] 197 任务13.1 手动安装Linux Nginx Mysql PHP和WordPress 198 13.1.1 准备工作 198 13.1.2 安装Mysql5.6.29 199 13.1.3 安装PHP5.5.12 202 13.1.4 安装Nginx1.10 205 13.1.5 安装WordPress 206 13.1.6 启动网页 207 任务13.2 脚本安装Linux Nginx Mysql PHP 和WordPress 207 13.2.1 初始化安装脚本编写 207 13.2.2 Mysql安装脚本的编写 209 13.2.3 PHP安装脚本的编写 211 13.2.4 Nginx安装脚本的编写 213 13.2.5 WordPress安装脚本的编写 214 13.2.6 验证wordpress 216 练习(每题50分,共计100分) 218 项目十四 shell综合案例二(安装Openstack) 219 [学习目标] 219 任务14.1 手动安装Openstack 220 什么是Openstack 220 14.1.1基本环境准备 222 14.1.2 安装mysql数据库服务 225 14.1.3 安装keystone认证服务 226 14.1.4 安装glance镜像服务 230 14.1.5 安装nova计算服务 233 14.1.6 安装neutron网络服务 238 14.1.7 安装dashboard服务 248 任务14.2 脚本安装openstack 250 14.2.1 基本环境脚本的编写 255 14.2.2 mysql脚本的编写 256 14.2.3 keystone脚本的编写 258 14.2.4 glance脚本的编写 263 14.2.5 nova脚本的编写 266 14.2.6 neutron脚本的编写 270 14.2.7 dashboard脚本的编写 279 14.2.8 验证登录,使用openstack 280 附录Shell编码规范说明 295 1. 什么时候使用shell 295 2.Shell文件和解释器调用 295 3.环境 296 4.注释 296 5.格式 298 6.特性及错误 304 7.命名转换 308 8.调用命令 311
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值