本节书摘来自异步社区《linux指令从入门到精通》一书中的第4章,第4.2节,作者:宋磊 , 宋馥莉 , 雷文利著,更多章节内容可以访问云栖社区“异步社区”公众号查看
linux下的文本编辑器种类很多,功能的复杂程度和操作的难易度也不尽相同。在此我们将其大致分为可视和不可视两种。在本节中讲解的ed,jed,joe,pico和sed都属于不可视编辑器,不能进行全屏方式下的操作,操作相对简单。但可视编辑器的交互功能更好,典型的可视编辑器有vi和emacs,这将在下一节中讲述。
4.2.1 ed指令:简单的行文本编辑器
理解行编辑的概念,掌握ed指令进行简单的行文本编辑的方法
ed [参数] [文件名]
ed指令是linux下一个功能简单的行文本编辑器,属于不可视编辑器,用户无法查看全部的文档内容,但可以在命令行模式下查看最后一行的内容。ed文本编辑器有命令行模式和输入模式两种工作模式,当第一次在命令行中输入ed指令,启动ed行文本编辑器,同时进入命令行模式。此时用户可通过ed编辑器的内建指令来进行模式的切换以及文本的编辑。ed指令一次仅能完成一行文本的编辑,当用户要建立一个简单的小文件以及进行shell脚本编辑时,使用该指令还是很方便的。
参数及其说明如下:
命令模式下常用命令说明如下:
ed编辑器行寻址命令说明如下:
范例411 启动ed文本编辑。
在命令行中直接输入ed指令将启动命令行编辑器,用户可以在其环境下进行编辑,或直接输入w 文件名,新建一个文本文档。
<code>[root@localhost ~]# ed //启动ed文本编辑</code>
用户也可以在ed指令中直接指定要打开的文件,如果文件名不存在,将显示提示符“newfile :no such file or dirctory”,用户可以编辑新文本文档。
如果指定的文件存在,在ed编辑器中将显示文件的大小,空文本文件将显示为0。
范例412 ed文本编辑器的模式切换以及文本编辑。
在ed编辑器中,用户可以通过输入内建指令a,c,i,从命令行模式切换到输入模式,同时选择文本的编辑方式。从输入模式返回到命令行模式只需输入“.”,同时按下“enter”键即可。
a命令(末行输入):启动ed文本编辑,切换到输入模式,编辑文本。
i命令(插入一行):在ed编辑器中,要进行输入模式下的不同输入方式之间的切换时,必须先切换到命令行状态。
c命令(替换):将文档的最后一行替换为新输入的内容
存盘并退出ed编辑器。
范例413 ed文本编辑器的指定行寻址。在ed编辑器的命令行模式下输入“0a”,在进行模式切换时,对指定行进行寻址。“0”表示的是第一行之前的位置,使用该命令就可以在指定文档的开头进行编辑。
范例414 使用ed文本编辑器进行快速文本编辑。因为ed文本编辑器每次只能对一行进行文本编辑,如果用户有多行需要编辑,一次输入一行就显得比较麻烦。而使用echo指令通过管道将其输出作为ed指令的输入,就能同时对多行文本进行编辑。
4.2.2 jed:文本编辑指令
掌握使用jed进行编辑的方法
可选参数及其说明如下:
范例415 编辑指定文件can.c。
<code>[root@localhost yy]jed -2 can.c //编辑文件can.c</code>
执行指令“jed -2 can.c”将在屏幕上显示上下两个编辑区,对文件can.c进行编辑。
4.2.3 joe:文本编辑指令
掌握joe指令的使用方法
joe -可选参数
joe指令是一个功能强大且全面的文本编辑器。使用joe编辑器可以一次打开多个文件,每个打开的文件都有各自的编辑区,用户可以在各个文件之间进行文件的剪贴。
【joe编辑器的相关操作】
pgup:上一页。
pgdown:下一页。
ctrl+a:将光标移到该行开始。
ctrl+e:将光标移到该行结尾。
ctrl+k+u:将光标移到文件起始处。
ctrl+k+v:将光标移到文件结尾处。
ctrl+k+h:显示帮助菜单。
ctrl+k+f:查找字符串。
ctrl+k+c:复制区块。
ctrl+k+y:删除区块。
ctrl+k+d:保存。
ctrl+c:关闭文件。
范例416 编辑文件。
执行指令“joe a1”编辑文件a1。
范例417 以只读方式打开指定文件。
执行指令“joe -rdonly a1”以只读方式打开文件a1。
4.2.4 pico:文本编辑指令
掌握pico文本编辑器的使用方法
pico [-可选参数] [文件]
pico是一个纯文本编辑器,利用它可以进行文本输入、阅览、拷贝、剪贴等操作,以及文本搜索和拼写检查。如果系统中安装了pico文本编辑器,只要在shell中输入pico指令就能启动pico编辑器。与其他编辑器相比,pico没有输入模式之分,可以直接进行文本的编辑。
【进入指令后的操作】
ctrl+a:该行的最前面。
ctrl+d:删除行。
ctrl+e:该行的最后面。
ctrl+g:帮助文档。
ctrl+j:重新对齐。
ctrl+k:删除行,放在缓冲区,类似于剪切。
ctrl+o:保存文件。
ctrl+r:插入文件。
ctrl+u:回到上一步。
ctrl+v:显示下一页。
ctrl+w:查找字符串。
ctrl+x:关闭文件。
ctrl+y:页面滚动。
ctrl+:替换。
范例418 直接启动pico文本编辑器。
<code>[root@localhost ~]#pico //直接输入pico回车启动pico文本编辑器</code>
执行指令“pico”,启动pico文本编辑器。
执行指令“pico filename”也可启动pico文本编辑器,同时打开文件filename,在此不再赘述。在pico编辑环境的下方,列有两排最常用的操作按键,其中“^”表示的是“ctrl”键。
范例419 在pico文本编辑环境下显示帮助信息。
从范例可以看出,在帮助信息中给出了pico环境下按键操作的详细说明。
4.2.5 sed:在线文本编辑指令
能使用sed指令利用script来处理文本文件
sed [-可选参数] {命令} [文本文件]
sed指令在处理文本文件的过程中是非交互的,用户可以通过将想要执行的script命令直接写到sed指令中来实现对指定文本文件的处理。由于sed指令的执行是非交互的,在一些需要强制执行的情况下,如执行一些简单的具有重复性的操作时,也是一个不错的选择。
【script命令】
{行号}:指定文本文件中的行号。
a{字符串}:行后追加字符串。
d:删除行。
i{字符串}:行前追加字符串。
p:显示行。
r{文本}:执行文本处理。
s/{先前字符串}/{新字符串}/{替换方法}:使用指定的替换方法将先前字符串替换成新字符串。
范例420 利用script的替换命令来执行指定字符串的替换。
执行指令“sed –e s/b1/filename/ b1”, 用指定字符串“filename”替换掉文件b1中的字符“b1”,而指令“sed –e 5s/b1/filename/ b1”的执行结果是将指定行号中的字符进行替换。
范例421 利用script命令在文件的行前和行后追加指定字符串。
在上面的范例中已讲述,通过script命令,实现在文件的所有行以及指定行前或行后追加字符串的方法。
范例422 利用script文件来执行指定字符的替换。
执行指令“sed –n –f scpfile b1”, 用指定script文件scpfile来执行指定字符的替换和指定行的追加。