




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章文本编辑器案例一:把/etc/inittab文件复制到/test目录并改名为tab;查看tab文件共有多少行,第18行为什么,并记录;在第25行后添加上自己的名字的英文缩写;把第26行分别复制到第34行下面与内容最后;查找单词now在多少行有;命令行模式下,在第10行前后分别添加一空行;再删除该修改后内容的第25行、30行;保存并退出;在末行模式下命令q与q!分别在什么情况下使用;4-1vi编辑器的使用
1.vi定义
Vi
是Linux系统自带的一种文本编辑软件2.vi三种模式命令模式:commandmode
输入执行特定vi功能的命令输入模式:insertmode
输入、编辑、修改文本内容末行模式:lastlinemode
执行对文件的保存,退出,内容搜索等操作VI的模式三种模式命令模式输入模式末行模式Linux退出vivifile末行模式输入模式转义命令按[Esc]键文本输入命令执行完毕或按[Esc]键命令模式vi文本编辑器的操作模式命令模式状态栏编辑区图4-2命令模式下文本编辑器状态输入模式插入模式标志
图4-4插入模式下文本编辑器状态末行模式末行模式标志图4-5末行模式下文本编辑器状态1.启动vi命令例子#vitest.c#include<stadio.h>#include<string.h>intmain(){printf(“thisisatest\n”);return0;}#vi+5test.c#vi+/inttest.c#vitest.cjob.i在末行模式下输入:n编辑下一个文件,用ctrl+^实现两文件之间的切换。viabc
:n跳至下一个文件,:e#回到刚才编辑的文件。
比如当前编辑文件为a,:n跳至b,再:n跳至c,:e#回到b,想回到a的话用:ea
2.显示vi的行号在末行模式下输入命令::setnu(即number)行号不是文件内容的一部分。指示编辑器关掉行号::setnonumber命令模式的特点打开vi就进入命令模式无论当前为何种模式,按ESC键就可回到命令模式命令模式下,任何键盘操作都被认为是vi命令,自动执行,且不会显示在屏幕上,更不会写入文件首输入模式的特点在命令模式下敲击相应字母键进入输入模式:如:插入:I添加:a此模式下,输入任何字符都可作为文件内容加以保存
末行模式的特点在命令模式下输入“:”方可切换到末行模式在“:”后面输入相应的操作命令,按回车键执行3.vi的使用
#vi
[文件名]//进入vi编辑器(1)命令模式下的操作排版命令有:移动光标左移一个字符:按h右移一个字符:按l上移一行:按k下移一行:按j移至行首:按^(shift+6)移至行尾:按$(shift+4)移至文件顶部:按H移至文件尾部:按L移至文件中部:按M前翻一屏(下翻):按ctrl+f后翻一屏(上翻):按ctrl+b前翻半屏:按ctrl+d后翻半屏:按ctrl+u插入文本(进入输入模式)在光标右边插入文本:按a在一行的结尾处添加文本:按A光标左边插入文本:按i在行首插入文本:按I在光标所在行的下一行插入新行:按o在光标所在行的上一行插入新行:按O撤消操作撤消前一个命令:按u
撤销最后一次修改,不论光标是否在修改行撤消对一行的更改:按U撤销对当前行所做的修改,前提是光标在当前行删除文本删除一个字符: 按x
x删除光标处字符,nx删除从光标所在位置开始的n个字符
X
删除光标前面的那个字符,nX从光标前面那个字符开始向左的n个字符删除一词: 按dw删除一行: 按dd删除文本删除行的部分内容: 按D(删除光标右的内容) 按d0(删除光标左的内容)删除到文件的结尾:按dG复制和粘贴复制一行内容:按yy粘贴:按p剪切:按dd查找字符串
按:/查找的内容按:n //跳到下一个出现处
N//跳到上一个出现处复制文本块用行号标识的文本块可以作为一个单位移动1.若屏幕上没有显示行号,则输入
:setnumber输入下列命令按回车键
:2copy4
文件第二行被复制到第四行的后面。
:1,4copy7第一至四行之间的文本复制到第七行之后。以冒号开头的编辑命令(:1,4copy9)对用户开始行号和结束行号标识的文本块进行操作,文本块的开始行号和结束行号用逗号隔开。注意要确保先输入小行号,再输入大行号,编辑器不能解释诸如62,57或9,2之类的行号。copy命令可以缩写为co:10,14co0:10,14co$(此处$表示最后一行):.,65co80(此处.表示当前行)文本块的其他操作移动文本块:1,8move17向文件中追加文本
:5,8w>>myfile2覆盖文本块
:1,6wmyfile2另存文本块(假设在myfile1中执行如下命令):1,8writemyfile2注意:某些特殊的字符(/&!.^*$\?)对查找过程有特殊意义,并且要查找中被使用时必须“转意”在转意一个特殊字符,需在其前面加一个反斜杠(\)如:要查找串“anything?”
则输入:“/anything\?”
录入,排版,修改,删除等操作输入模式下的操作
:w[文件名] //保存文件:q //退出VI:q! //退出不保存:wq //保存退出(或输入盘
ZZ;注:命令ZZ既不以冒号开头,也不后接回车键)末行方式下的操作4.5sed、awk等工具的应用用可视化编辑器开始编辑文件时,文件被读入用于编辑或者缓冲的内存空间:整个文件被读入内存,可以对文件做任意的修改。如果vi编辑器来编辑文件,需要的内存大小取决于文件大小。sed流编辑器介绍另一种编辑文件的方法是每次只读入一行,修改和保存后再读入另一行。用这种方法可以编辑较大的文件,因为在工作内存中一次只有一行。流编辑器以单行方式读入编辑器处理的数据流,也称为sed(streameditor)。实用程序sed对输入行进行必要的修改,然后输出此行。4.5.1sed实用程序4.5.1.1创建示例文件coffeecoffeecoffeecoffee2003coffeecoffee2003decafcoffee2000coffeecoffeedef2003coffee2003decaf文件caffeine4.5.1.2修改目标单词希望用chocolate替换caffeine副本中出现的单词coffee。不用vi编辑器,也可创建这样的替换版本输入命令:sed‘s/coffee/chocolate/’caffeine
sed‘s/coffee/chocolate/’caffeine指示shell做替换操作替换的目标字符串替换字符串指示shell不要解释单引号内的任何字符读取的文件4.5.1.3修改所有目标行(1)输入下面要求做全局修改的sed命令:
sed‘s/coffee/chocolate/g’caffeine4.5.1.4选中行然后进行修改sed命令可以用于只作用于满足要求的行。sed‘/2003/s/coffee/chocolate/g’caffeine4.3.1.5查找行并进行替换sed‘/2003/s//2010/g’caffeine选中包含行目标字符串2003的行,将2003替换为2010。该命令中没有指定替换的目标字符串,则替换用于选择行的行目标字符串。4.5.1.6删除行sed‘/def/d’caffeine文件中所有含有字符串def的行都会被删除。4.5.1.7在sed中使用正则表达式(1)输入:
sed‘/^2/s/coffee/chocolate/g’caffeine(2)输入:sed‘/^c/d’caffeine(3)输入:sed‘/^$/d’caffeine选中所有以2开头的行,如果该行包含字符串coffee,则将其替换为chocolate。选中所有以字符c开头的行,然后删除这些行选中所有空行,然后删除这些行4.5.2数据操作工具awk
实用程序awk用来定位数据库中特定的记录和字段,进行修改和计算,然后输出选中的部分数据主要用于信息检索、数据操作和报表生成。其命名来自UNIX实用程序的程序员Aho、Weinberger和Kernighan。创建文件food文件food包含三条记录,每条记录由三个字段组成:食品名称、种类和价格。字段以空格分隔。空格分隔符是awk的默认分隔符。milkdairy2.00hamburgermeat2.75cheesedairy1.50food文件4.5.2.1选择行然后输出字段实用程序awk选择包含给定样本的记录,然后对该记录完成给定的操作。输入命令:awk‘/dairy/{print$3}’food4.5.2.1选择行然后输出字段命令说明awk运行实用程序awk‘
’单引号内指定字符串不进行解释,而是作为参数传递给awk/dairy/选择所有含有字符串dairy的行,无论{}里指定了什么操作{print$3}对选中的行进行的操作,即输出或者打印第三字段($3)。大括号用来标识对所选中的行的操作。print是实用程序awk可进行的操作之一。food读取的输入文件选择行然后输出字段awk命令也可以输出多个字段。例如,输入:awk‘/dairy/{print$3,$1}’food输出含有字符串dairy记录的第三字段,空格,然后再输出第一字段。4.5.2.2修改字段定界符awk默认的字段定界符是空格,也可以使用其它字符作为定界符。指示awk用冒号作为分隔符。输入awk–F:’{print$1,$3,$4}’/etc/passwd|more归纳与总结:通过本节课的学习我们要掌握以下内容文件、目录的操作命令及VI的使用
补充:通配符:模式串意义*当前目录下所有文件的名称*Text*当前目录下所有文件名中包含Text的文件的名称[ab-dm]*当前目录下所有以a、b、c、d、m开头的文件的名称[ab-dm]?当前目录下所有以a、b、c、d、m开头且后面只跟一个字符的文件的名称/usr/bin/??目录/usr/bin/下所有名称为两个字符的文件的名称注释:1、*代表任何字符串(长度可以不等),例如:f*匹配以f打头的任意字符串;但要注意,文件名前的圆点(.)和路径名中的斜线(/)必须显示匹配,例如“*”不能匹配.file,而“.*”才可以匹配.file;2、连字符“-”仅在方括号内有效,表示字符范围,如在方括号外面就成为普通字符了,而*和?只在方括号外面是能配符,若出现在方括号之内,它们也失去了通配符的能力,成为普通的字符。例如“-a[*?]abc”只有一对方括号是通配符,*和?均为普通字符,因此,它匹配的字符串只能是-a*abc和-a?abc。引号
1、单引号‘由单引号括起来的字符
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论