当前位置: 首页 > news >正文

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

本节书摘来自异步社区《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来执行指定字符的替换和指定行的追加。

相关文章:

  • Java 获取当前操作系统信息
  • import static和import的区别(转)
  • 程序员再回首
  • MYSQL坑爹的UPDATE子查询,UPDATE时避免使用子查询
  • R数据可视化----ggplot2之标度、坐标轴和图例详解
  • 深入解析SQL Server并行执行原理及实践(上) ---高继伟
  • 关于在a标签中添加点击事件的一些问题
  • Hbase 布隆过滤器BloomFilter介绍
  • E: Sub-process /usr/bin/dpkg returned an error code (1)错误解决
  • Maven属性(properties)标签的使用
  • 微信小程序开发(1) 天气预报
  • 爱情的餐桌-作家张小娴
  • NodeJs之fs的读写删移监块
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 和公务员谈恋爱是一种什么样的感受
  • avalon2.2的VM生成过程
  • Create React App 使用
  • Electron入门介绍
  • ES6核心特性
  • exif信息对照
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • java第三方包学习之lombok
  • Mocha测试初探
  • Python中eval与exec的使用及区别
  • Terraform入门 - 1. 安装Terraform
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • win10下安装mysql5.7
  • 工作手记之html2canvas使用概述
  • 观察者模式实现非直接耦合
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 一天一个设计模式之JS实现——适配器模式
  • 以太坊客户端Geth命令参数详解
  • 正则表达式
  • 回归生活:清理微信公众号
  • 选择阿里云数据库HBase版十大理由
  • ​io --- 处理流的核心工具​
  • (12)Hive调优——count distinct去重优化
  • (接口封装)
  • (九)信息融合方式简介
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (十一)图像的罗伯特梯度锐化
  • (四)Linux Shell编程——输入输出重定向
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .NET 分布式技术比较
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET关于 跳过SSL中遇到的问题
  • .php文件都打不开,打不开php文件怎么办
  • @GetMapping和@RequestMapping的区别
  • @ModelAttribute 注解