《Linux指令从入门到精通》——4.2 Linux下的简单文字模式文本编辑器

简介: Linux下的文本编辑器种类很多,功能的复杂程度和操作的难易度也不尽相同。在此我们将其大致分为可视和不可视两种。在本节中讲解的ed,jed,joe,pico和sed都属于不可视编辑器,不能进行全屏方式下的操作,操作相对简单。

本节书摘来自异步社区《Linux指令从入门到精通》一书中的第4章,第4.2节,作者:宋磊 , 宋馥莉 , 雷文利著,更多章节内容可以访问云栖社区“异步社区”公众号查看

4.2 Linux下的简单文字模式文本编辑器

Linux下的文本编辑器种类很多,功能的复杂程度和操作的难易度也不尽相同。在此我们将其大致分为可视和不可视两种。在本节中讲解的ed,jed,joe,pico和sed都属于不可视编辑器,不能进行全屏方式下的操作,操作相对简单。但可视编辑器的交互功能更好,典型的可视编辑器有vi和emacs,这将在下一节中讲述。

4.2.1 ed指令:简单的行文本编辑器
理解行编辑的概念,掌握ed指令进行简单的行文本编辑的方法

ed [参数] [文件名]

ed指令是Linux下一个功能简单的行文本编辑器,属于不可视编辑器,用户无法查看全部的文档内容,但可以在命令行模式下查看最后一行的内容。ed文本编辑器有命令行模式和输入模式两种工作模式,当第一次在命令行中输入ed指令,启动ed行文本编辑器,同时进入命令行模式。此时用户可通过ed编辑器的内建指令来进行模式的切换以及文本的编辑。ed指令一次仅能完成一行文本的编辑,当用户要建立一个简单的小文件以及进行Shell脚本编辑时,使用该指令还是很方便的。

 参数及其说明如下:
screenshot

命令模式下常用命令说明如下:
screenshot

ed编辑器行寻址命令说明如下:
screenshot

范例411 启动ed文本编辑。

在命令行中直接输入ed指令将启动命令行编辑器,用户可以在其环境下进行编辑,或直接输入w 文件名,新建一个文本文档。

[root@localhost ~]# ed //启动ed文本编辑
用户也可以在ed指令中直接指定要打开的文件,如果文件名不存在,将显示提示符“Newfile :No Such file or dirctory”,用户可以编辑新文本文档。

[root@localhost ~]# ed    newfile                //启动ed文本编辑
Newfile :No Such file or dirctory

如果指定的文件存在,在ed编辑器中将显示文件的大小,空文本文件将显示为0。

[root@localhost ~]# ed    newfile                //启动ed文本编辑
0

范例412 ed文本编辑器的模式切换以及文本编辑。

在ed编辑器中,用户可以通过输入内建指令a,c,i,从命令行模式切换到输入模式,同时选择文本的编辑方式。从输入模式返回到命令行模式只需输入“.”,同时按下“Enter”键即可。

a命令(末行输入):启动ed文本编辑,切换到输入模式,编辑文本。

[root@localhost ~]# ed    newfile        //启动ed文本编辑
0
a                                           //切换到输入模式,将新输入内容加在最后一行的后面
i am a student
i am come from china

i命令(插入一行):在ed编辑器中,要进行输入模式下的不同输入方式之间的切换时,必须先切换到命令行状态。

.                                            //切换到命令行模式
i                                            //切换到输入模式,将新输入内容插入最后一行内容的前面
i don’t have the ability to say no.

c命令(替换):将文档的最后一行替换为新输入的内容

.                                            //切换到命令行模式
c                                            //切换到输入模式,将新输入内容替换最后一行的内容
there is the end of the  file.

存盘并退出ed编辑器。

.
w                                            //保存文件
74
q                                            //退出ed
[root@localhost ~]# cat newfile
i am a student
i don’t have the ability to say no.
there is the end of the  file.
[root@localhost ~]#

范例413 ed文本编辑器的指定行寻址。在ed编辑器的命令行模式下输入“0a”,在进行模式切换时,对指定行进行寻址。“0”表示的是第一行之前的位置,使用该命令就可以在指定文档的开头进行编辑。

[root@localhost ~]# ed newfile        //启动ed文本编辑
74
0a                                           //切换到输入模式,在指定的位置输入内容
There is the beginning of the file.
.
Wq                                           //保存并退出 
105
[root@localhost ~]# cat newfile
There is the beginning of the file.
i am a student
i don’t have the ability to say no.
there is the end of the  file.
[root@localhost ~]#

范例414 使用ed文本编辑器进行快速文本编辑。因为ed文本编辑器每次只能对一行进行文本编辑,如果用户有多行需要编辑,一次输入一行就显得比较麻烦。而使用echo指令通过管道将其输出作为ed指令的输入,就能同时对多行文本进行编辑。

[root@localhost ~]# cat newfile                       //显示文本内容
There is the beginning of the file.
i am a student
i don’t have the ability to say no.
there is the end of the  file.
[root@localhost ~]# (echo ‘c’;echo ‘ed is a line-oriented text editor’;echo ‘.’;echo  
‘a’;echo ‘there is the end of the file.’;echo ‘.’;echo ‘wq’)|ed newfile
[root@localhost ~]# cat newfile                       //显示文本内容
There is the beginning of the file.
i am a student
i don’t have the ability to say no.
ed is a line-oriented text editor
there is the end of the  file.
[root@localhost ~]#

4.2.2 jed:文本编辑指令
掌握使用jed进行编辑的方法
screenshot

可选参数及其说明如下:
screenshot

范例415 编辑指定文件can.c。

[root@localhost yy]jed -2 can.c //编辑文件can.c
执行指令“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 编辑文件。

[root@localhost yy]# joe a1                    //编辑文件a1
Processing '/etc/joe/joerc'...done
Processing '/etc/joe/joerc'...done
    IW   a1                        Row 2    Col 1    17:24  Ctrl-K H for help
Hello everybody
Hello everyone
How are you
Fine thank you and you
I fine too
Linux
Red hat Linux
Joe for red hat Linux
Joe version
[root@localhost yy]#

执行指令“joe a1”编辑文件a1。

范例417 以只读方式打开指定文件。

[root@localhost ~]# joe -rdonly a1        //以只读的方式打开文件a1
Processing '/etc/joe/joerc'...done
Processing '/etc/joe/joerc'...done
    IW   a1 (Read only)                       Row 2    Col 1   17:24  Ctrl-K H for help
Hello everybody
Hello everyone
How are you
Fine thank you and you
I fine too
Linux
Red hat Linux
Joe for red hat Linux
Joe version
[root@localhost ~]#

执行指令“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文本编辑器。

[root@localhost ~]#pico //直接输入pico回车启动pico文本编辑器
执行指令“pico”,启动pico文本编辑器。

UW  PICO(tm) 4.10                     New Buffer

^G Get Help  ^O WriteOut  ^R Read File ^Y Prev Page ^K Cut Text  ^C Cur Pos
^X Exit      ^J Justify   ^W Where Is  ^V Next Page ^U UnCut Text^T To Spell

执行指令“pico filename”也可启动pico文本编辑器,同时打开文件filename,在此不再赘述。在pico编辑环境的下方,列有两排最常用的操作按键,其中“^”表示的是“Ctrl”键。

范例419 在pico文本编辑环境下显示帮助信息。

UW  PICO(tm) 4.10                     New Buffer

Pico is designed to be a simple,easy-to-use text editor with a layout very similar to 
the pine mailer.The status line at the top of the display show pico’s version,the cur-
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
^G (F1)  Display this help text
^F         move Forward a character
^B         move Borward a character
^P         move to the Previous line
^N         move to the next line
^A         move to the beginning of the current line
^E         move to the End of the current line
^V  (F8)  move forward a page of text
^Y (F7)  move backward a page of text
^X         Exit help

从范例可以看出,在帮助信息中给出了pico环境下按键操作的详细说明。

4.2.5 sed:在线文本编辑指令
能使用sed指令利用script来处理文本文件

sed [-可选参数] {命令} [文本文件]

sed指令在处理文本文件的过程中是非交互的,用户可以通过将想要执行的script命令直接写到sed指令中来实现对指定文本文件的处理。由于sed指令的执行是非交互的,在一些需要强制执行的情况下,如执行一些简单的具有重复性的操作时,也是一个不错的选择。

可选参数及其说明如下:

screenshot

【script命令】

  • {行号}:指定文本文件中的行号。
  • a{字符串}:行后追加字符串。
  • d:删除行。
  • i{字符串}:行前追加字符串。
  • p:显示行。
  • r{文本}:执行文本处理。
  • s/{先前字符串}/{新字符串}/{替换方法}:使用指定的替换方法将先前字符串替换成新字符串。

范例420 利用script的替换命令来执行指定字符串的替换。

[root@localhost yy]# cat b1                    //显示文件b1的信息
1 b1 1024
2 b1 1133
3 b1 0981
4 b1 1321
5 b1 1987
6 b1 1877
[root@localhost yy]# sed –e s/b1/filename/ b1   //用字符串filename替换掉文件b1中的字符b1
1 filename 1024
2 filename 1133
3 filename 0981
4 filename 1321
5 filename 1987
6 filename 1877
[root@localhost yy]# sed –e 5s/b1/filename/ b1  //用字符串filename替换掉文件b1中指定行中的字符b1
1 b1 1024
2 b1 1133
3 b1 0981
4 b1 1321
5 filename 1987
6 b1 1877
[root@localhost yy]#

执行指令“sed –e s/b1/filename/ b1”, 用指定字符串“filename”替换掉文件b1中的字符“b1”,而指令“sed –e 5s/b1/filename/ b1”的执行结果是将指定行号中的字符进行替换。

范例421 利用script命令在文件的行前和行后追加指定字符串。

[root@localhost yy]# cat b1                //显示文件b1的信息
1 b1 1024
2 b1 1133
3 b1 0981
4 b1 1321
5 b1 1987
6 b1 1877
[root@localhost yy]# sed –e i\b1 b1       //在行前追加字符串
b1
1 b1 1024
b1
2 b1 1133
b1
3 b1 0981
b1
4 b1 1321
b1
5 b1 1987
b1
6 b1 1877
[root@localhost yy]# sed –e 1i\b1 b1   //在指定的行前追加字符串
b1
1 b1 1024
2 b1 1133
3 b1 0981
4 b1 1321
5 b1 1987
6 b1 1877
[root@localhost yy]# sed –e a\b1 b1   //在行后追加字符串
1 b1 1024
b1
2 b1 1133
b1
3 b1 0981
b1
4 b1 1321
b1
5 b1 1987
b1
6 b1 1877
b1
[root@localhost yy]# sed –e 6a\b1 b1   //在指定行后追加字符串
1 b1 1024
2 b1 1133
3 b1 0981
4 b1 1321
5 b1 1987
6 b1 1877
b1
[root@localhost yy]#

在上面的范例中已讲述,通过script命令,实现在文件的所有行以及指定行前或行后追加字符串的方法。

范例422 利用script文件来执行指定字符的替换。

[root@localhost yy]# cat scpfile        //显示文件scpfile的信息
2s/b1/filename/p
4s/b1/filename/p
6s/b1/filename/p
1i\b1
[root@localhost yy]# sed –n –f scpfile b1 //用script文件scpfile来执行指定字符的替换和追加
b1
1 b1 1024
2 filename 1133
3 b1 0981
4 filename 1321
5 b1 1987
6 filename 1877
[root@localhost yy]#

执行指令“sed –n –f scpfile b1”, 用指定script文件scpfile来执行指定字符的替换和指定行的追加。

相关文章
|
30天前
|
Ubuntu Linux 测试技术
Linux系统之部署轻量级Markdown文本编辑器
【10月更文挑战第6天】Linux系统之部署轻量级Markdown文本编辑器
77 1
Linux系统之部署轻量级Markdown文本编辑器
|
30天前
|
Linux Windows
【Linux】-基本指令(下)
【Linux】-基本指令(下)
【Linux】-基本指令(下)
|
24天前
|
Linux
【Linux第一弹】- 基本指令
【Linux第一弹】- 基本指令
31 1
|
30天前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(三):Linux下操作指令大全
Ubuntu学习笔记,介绍了Linux操作系统中常用的命令和操作,如文件管理、系统信息查看、软件安装等。
44 3
|
30天前
|
Unix Linux 索引
【Linux】-基本指令(上)
【Linux】-基本指令(上)
|
1月前
|
Linux Shell Windows
Linux入门1——初识Linux指令
Linux入门1——初识Linux指令
26 0
Linux入门1——初识Linux指令
|
1月前
|
人工智能 Unix Linux
装杯 之 Linux指令
本文介绍了Linux操作系统的基本命令。首先欢迎各位进入Linux的世界,并展示了`ls`命令,用于列出目录下的文件和子目录。接着介绍了`pwd`命令,用于显示当前目录;`cd`命令,用于切换目录;`mkdir`命令,用于创建目录;`touch`命令,用于创建普通文件或修改文件时间戳;`rmdir`命令,用于删除空目录;以及`rm`命令,用于删除文件或目录。通过这些基本命令,你可以开始探索和管理Linux系统。
|
5天前
|
缓存 监控 Linux
|
8天前
|
Linux Shell 数据安全/隐私保护
|
9天前
|
域名解析 网络协议 安全
下一篇
无影云桌面