文本编辑器是用作编写普通文字的应用软件,它与文档编辑器的不同之处在于它并非用作桌面排版,而是常用来编写程序的源代码。本章将为大家讲述命令行模式下的文本编辑和处理指令的具体使用方法。
文本编辑是Linux中最基本的应用之一,它不仅可以实现纯文本文件的创建、格式编辑等,还可以用来编写程序代码。在Linux系统中,我们也常常使用文本文件来保存系统以及用户的配置信息。
Linux 下的文本编辑器种类很多,功能的复杂程度和操作的难易度也不尽相同。在此我们将其大致分为可视和不可视两种。在本节中讲解的ed,jed,joe,pico和sed都属于不可视编辑器,不能进行全屏方式下的操作,操作相对简单。但可视编辑器的交互功能更好,典型的可视编辑器有vi和emacs,这将在下一节中讲述。
学习目标 理解行编辑的概念,掌握 ed 指令进行简单的行文本编辑的方法
语法 ed [参数] [文件名]
功能说明 ed 指令是 Linux 下一个功能简单的行文本编辑器,属于不可视编辑器,用户无法查看全部的文档内容,但可以在命令行模式下查看最后一行的内容。ed文本编辑器有命令行模式和输入模式两种工作模式,当第一次在命令行中输入ed指令,启动ed行文本编辑器,同时进入命令行模式。此时用户可通过ed编辑器的内建指令来进行模式的切换以及文本的编辑。ed 指令一次仅能完成一行文本的编辑,当用户要建立一个简单的小文件以及进行Shell脚本编辑时,使用该指令还是很方便的。
参数说明 参数及其说明如下:


内建指令
命令模式下常用命令说明如下:

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

基础应用
范例411 启动ed文本编辑。
在命令行中直接输入ed指令将启动命令行编辑器,用户可以在其环境下进行编辑,或直接输入 w 文件名,新建一个文本文档。
[root@localhost ~]# ed //启动ed文本编辑
用户也可以在 ed 指令中直接指定要打开的文件,如果文件名不存在,将显示提示符“Newfile :NoSuch 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‘edisaline-orientedtexteditor’;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 ~]#
学习目标 掌握使用 jed 进行编辑的方法
语法 jed 必要参数 [-可选参数] [文件]
功能说明 jed 指令可用来编辑文本文件,适合编辑程序原始代码。
参数说明 必要参数及其说明如下:

可选参数及其说明如下:

基础应用
范例415 编辑指定文件can.c。
[root@localhost yy]jed -2 can.c //编辑文件can.c
执行指令“jed -2 can.c”将在屏幕上显示上下两个编辑区,对文件 can.c 进行编辑。
学习目标 掌握 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。
学习目标 掌握 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环境下按键操作的详细说明。
学习目标 能使用 sed 指令利用 script 来处理文本文件
语法 sed [-可选参数] {命令} [文本文件]
功能说明 sed 指令在处理文本文件的过程中是非交互的,用户可以通过将想要执行的script命令直接写到sed指令中来实现对指定文本文件的处理。由于sed指令的执行是非交互的,在一些需要强制执行的情况下,如执行一些简单的具有重复性的操作时,也是一个不错的选择。
参数说明 可选参数及其说明如下:

【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 来执行指定字符的替换和指定行的追加。
学习目标 初步了解 emacs 编辑器的基础功能,学会使用 emacs 指令来进行文本编辑、电邮收发等各项功能。
语法 emacs [-可选参数] [文件名]
功能说明 Emacs (Editor MACroS 编辑器宏) 是一个功能强大的文本编辑器。该指令不仅可以用来编辑文本文件,还可以收发电邮、编辑远程文档、通过Telnet登录远程主机、登录IRC、查看日历、支持多种编程语言(如C/C++,Perl,Python,Lisp等)、管理日程和个人信息、阅读info和man文档、浏览网站以及强大的个人定制功能等各种功能。
Emacs编辑器能够运行在当前大多数的操作系统上,如GNU/Linux,Solaris,AIX,Mac OS X,MS-DOS,Microsoft Windows 以及 OpenVMS 等。Emacs 既可以在文本终端的命令行模式下运行,也可以在图形用户界面(GUI)环境下运行。在GUI环境下,Emacs为用户提供了菜单(Menubar)、工具栏(Toolbar)等交互方式。
参数说明 可选参数及其说明如下:

【Emacs快捷键】
文件编辑操作
C-f:前进一个字符。
C-b:后退一个字符。
M-f:前进一个字。
M-b:后退一个字。
C-a:移到行首。
C-e:移到行尾。
M-a:移到句首。
M-e:移到句尾。
C-p:后退一行。
C-n:前进一行。
M-x goto-line:跳到指定行。
C-v:向下翻页。
M-v:向上翻页。
M-<:缓冲区头部。
M->:缓冲区尾部。
C-M-f:向前匹配括号。
C-M-b:向后匹配括号。
C-l:当前行居中。
M-n or C-u n:重复操作随后的命令 n 次。
C-u:重复操作随后的命令 4 次。
C-u C-u:重复操作随后的命令 8 次。
C-x ESC ESC:执行历史命令记录,M-p 选择上一条命令,M-n 选择下一条命令。
C-d:删除一个字符。
M-d:删除一个字。
C-k:删除一行。
M-k:删除一句。
C-w:删除标记区域。
C-y:粘贴删除的内容。
C-@:标记开始区域。
C-x h:标记所有文字。
C-x C-x:交换光标位置和区域标记区开头。
M-w:复制标记区域。
C-_ or C-x u:撤销操作。
C-x C-f:打开文件,出现提示时输入/username@host:filepath 可编辑 FTP 文件。
C-x C-v:打开一个文件,取代当前缓冲区。
C-x C-s:保存文件。
C-x C-w:存为新文件。
C-x i:插入文件。
C-x C-q:切换为只读或者读写模式。
C-x C-x:退出 Emacs。
窗口操作
C-x 0:关闭本窗口。
C-x 1:只留下一个窗口。
C-x 2:垂直均分窗口。
C-x 3:水平均分窗口。
C-x o:切换到别的窗口。
C-x s:保存所有窗口的缓冲。
C-x b:选择当前窗口的缓冲区。
C-x^:纵向扩大窗口。
C-x }:横向扩大窗口。
目录操作
C-x d:打开目录模式。
C:拷贝当前文件。
d:标记为删除。
D:马上删除当前文件
i:在当前缓冲区的末尾插入子目录的内容。
g:刷新显示。
q:退出目录模式。
R:重命名当前文件。
s:按日期/文件名排序显示。
t:反向标记文件。
v:阅读光标所在的文件。
x:执行标记。
Z:压缩文件。
+:新建文件夹。
!:对光标所在的文件执行 Shell 命令。
执行Shell命令
M-x Shell:打开 Shell。
M-!:执行 Shell 命令 (Shell-command)。
M-1 M-!:执行 Shell 命令,命令输出插入光标位置,不打开新输出窗口。
M-|:针对某一特定区域执行命令(Shell-command-on-region)。
基础应用
范例423 命令行模式下启动Emacs文本编辑器。
[root@localhost ~]# emacs //启动Emacs文本编辑器
在 Linux 的终端直接输入指令“emacs”将启动 Emacs 文本编辑器。用户也可以直接输入想要编辑的文件路径,编辑器将打开该文件,在交互模式下进行操作。
学习目标 学习vim编辑器并掌握其使用方法,能运用该编辑器进行文件和源程序的编辑
语法 vim [-可选参数] [文件]
功能说明 vim 即 vi improve,是在 vi 文本编辑器的基础上发展而来的增强型 vi 文本编辑器。与传统的vi编辑器相比,vim增加了高亮、彩显等功能。它可工作在以下3种模式:命令行模式(command mode)、输入模式(input mode)和末行模式(last line mode),默认状态下的模式是命令行模式。现将3种模式下的常用操作命令列举如下:
【vim环境下的常用命令】
命令行模式:
D:删除光标所在行后的所有词。
G:将光标移至最后一行的行首。
h:将光标向左移一列。
i:将光标向右移一列。
j:将光标向上移一行。
k:将光标向下移一行。
nG:n 为数字,将光标移至第n 行。
p:将复制的内容粘贴到光标所在位置。
r:修改光标所在处的字符。
R:修改光标所在处的字符,按 Esc 键退出修改。
U:取消对行执行的所有改变。
W/w:将光标移至下一个字。
x:删除光标所在处的字符。
X:删除光标所在处的前一个字符。
d+ d:连按两次 d,将删除光标所在的行。
d+w:删除光标所在处的词,若光标位于 2 个字之间删除光标后的 1 个。
n+x:删除光标所在处及其后的共 n 个字符。
n+X:删除光标所在处及其前的共 n 个字符。
y+ y:整行复制。
y+w:复制光标所在处的整个字符串。
n+ d+ d:n 为数字,删除光标所在行及其下面的 n-1 行,共 n 行。
n+y+ w:n为数字,复制当前光标所在位的单词及紧跟其后的n-1个单词,共n个词。
n+y+ y:复制当前光标所在行及其下面的 n-1 行,共 n 行。
d+左方向键:连按将删除光标所在处的前一个字符。
d+右方向键:删除光标所在处的字符。
d+上方向键:删除光标所在行与其上一行。
d+下方向键:删除光标所在行与其下一行。
n+ d+上方向键:n 为数字,删除光标所在行及其上面的 n-1 行,共 n 行。
n+ d+下方向键:同 n+ d+ d。
Ctrl+ b:向上翻一页。
Ctrl+f:向下翻一页。
Ctrl+ u:向前翻半页。
Ctrl+ d:向后翻半页。
Ctrl+g:在最后一行处显示光标所在位置的行数和文章的总行数。
N+\:将光标移至第N 行。
0:将光标移至该行的行首。
$:将光标移至该行的行末。
{:将光标移至前面的“{”处。
}:将光标移至后面的“}”处。
.:重复执行上一次命令。
输入模式:
a:从当前光标所在字符之后开始输入。
A:从当前光标所在行的末端开始输入。
i:从当前光标处插入。
I:从当前光标所在行的行首开始插入。
o:在当前光标所在行下方新增一行,从新增行的行首开始输入。
O:在当前光标所在行上方新增一行,从新增行的行首开始输入。
末行模式:
:n:加载文件。
:w:存盘。
:w newfile:文件另存。
:wq:存盘并退出。
:w!:对只读文件强制写入存盘。
:q:退出。
:q!:强制退出。
:set nu:在每行开头显示行数。
:set none:取消每行开头的行数显示。
:!:强制执行。
:/ 字符串:匹配字符串查找,查找完成后突出显示匹配字符串,同时转至查找到的第一个匹配字符串,按n向下查找、N向上查找。
参数说明 可选参数及其说明如下:

基础应用
范例424 直接启动vim编辑器,进行文字编辑。
[root@localhost ~]# vim //启动vim编辑器
在Shell下输入指令“vim”,进入vim编辑环境。

进入vim编辑环境后,输入“:a”命令切换到输入模式,录入数据。

:a
Since Aug.10,when a ban on most carry-on liquids sent the amount of checked luggage soaring,
airlines have been misplacing many more bags,and the fumbling could well escalate during the busy holiday travel season.
在 vim 编辑环境下,完成数据输入后按“Esc”键,退出输入模式。此时输入“:w ax”保存输入数据。
:a
Since Aug.10,when a ban on most carry-on liquids sent the amount of checked luggage soaring,
airlines have been misplacing many more bags,and the fumbling could well escalate during the busy holiday travel season.
:w ax
完成文件保存后将显示该文件的相关信息如下所示。
:a
Since Aug.10,when a ban on most carry-on liquids sent the amount of checked luggage soaring,
airlines have been misplacing many more bags,and the fumbling could well escalate during the busy holiday travel season.
“ax” [New] 3L,132C written 6,1 All
如果不再进行其他的文件编辑,就可以退出编辑器了。输入命令“:q”,退出vim编辑器。
:a
Since Aug.10,when a ban on most carry-on liquids sent the amount of checked luggage soaring,
airlines have been misplacing many more bags,and the fumbling could well escalate during the busy holiday travel season.
:q
输入命令“:q”后直接按回车键退出vim编辑环境,回到Shell环境下。
[root@localhost ~]# vim //启动vim编辑器
[root@localhost ~]# //退出vim编辑器
学习目标 学会滤除控制字符
语法 col [-可选参数]
功能说明 col 指令过滤控制字符,可以将文件的内容转换为纯文本模式,可处理 man指令的输出数据。同时col指令还能使用多个空格代替tab,能用于转存nroff和tbl的输出。
参数说明 可选参数及其说明如下:
基础应用
范例425 过滤控制字符,并保存为文本文件。
[root@localhost yy]# man cat > h.txt
[root@localhost yy]# cat h.txt
CAT(1) User Commands CAT(1)
N^HNA^HAM^HME^HE
cat-concatenate files and print on the standard output
S^HSY^HYN^HNO^HOP^HPS^HSI^HIS^HS
c^Hca^Hat^Ht [_^HO_^HP_^HT_^HI_^HO_^HN]...[_^HF_^HI_^HL_^HE]...
------------------------------------------------------------------------------------
[root@localhost yy]# man cat | col -b > h1.txt //滤掉RLF和HRLF字符
[root@localhost yy]# cat h1.txt
CAT(1) User Commands CAT(1)
NAME
cat-concatenate files and print on the standard output
SYNOPSIS
cat [OPTION]...[FILE]..
------------------------------------------------------------------------------------
执行指令“man cat | col -b > h1.txt”将 cat 的 man 信息重定向到纯文本文件 h1.txt 使用 cat指令输出结果,文本中 nroff 控制字符已经滤出。
学习目标 学会删除文件中的指定列
语法 colrm [开始列号[结束列号] ]
功能说明 colrm 指令可以从标准输入中读取数据删除指定的列,输出到标准输出。如果指令中参数只包含开始列,将删除指定列之后的所有的列;如果指令中参数包含开始列和结束列,将删除两个列值之间的所有的列。指令还可对指定文件进行操作。
基础应用
范例426 删除指定的列及其以后的所有列。
[root@localhost ~]# colrm 3 //删除指定的第3列及其以后所有列
asdasdghhkl //输入数据,回车
as //输出数据中删除了指定列及其之后的所有列
dghjjk //输入
dg //输出输入“ctrl+d”退出
[root@localhost ~]#
执行指令“colrm 3”从标准输入输入“asdasdghhkl”回车输出为“as”,输入数据“dghjjk”输出“dg”,输入“ctrl+d”退出指令。
范例427 删除指定的两列及其中间的所有列。
[root@localhost ~]# colrm 3 5 //删除指定列
asdasdghhkl //输入数据,回车
asdghhkl //输出数据
dghjjk //输入
dgk //输出 输入“ctrl+d”退出
[root@localhost ~]#
执行指令“colrm 3 5”从标准输入输入“asdasdghhkl”回车输出为“asdghhkl”,输入数据“dghjjk”输出“dgk”,输入“ctrl+d”退出指令。
范例428 删除指定文件中的列。
[root@localhost yy]# cat a1 //显示文件a1的内容
Hello everyone
Hello everybody
How are you
Fine thank you and you
[root@localhost yy]# colrm 4 <a1 //删除文件a1每一行的第4列及其之后的所有列
Hel
Hel
How
Fin
[root@localhost yy]# colrm 1 3 <a1 //删除文件第1~3列之间的所有列
lo everyone
lo everybody
are you
e thank you and you
[root@localhost yy]#
执行指令“colrm 4 <a1”和指令“colrm 1 3 <a1”对指定文件进行操作。
学习目标 掌握对两个有序文件进行比较的方法
语法 comm [-可选参数] 文件 1 文件 2
功能说明 comm 指令将两个排序文件逐行进行比较,然后输出结果。在不指定参数时,比较结果将分成三部分输出:一、输出文件 1 的独有行;二、输出文件 2 的独有行;三、输出文件1和文件2的共有行。如果指令中文件名称为“-”,指令将从标准输入中读入。
参数说明 可选参数及其说明如下:

基础应用
范例429 比较排序文件。
[root@localhost yy]# cat a1 //显示文件a1的内容
Hello everyone
Hello everybody
How are you
Fine thank you and you
[root@localhost yy]# cat a2 //显示文件a2的内容
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
Fine thank you and you
[root@localhost yy]# comm a1 a2 //比较排序文件a1和a2
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
Hello everyone
Hello everybody
How are you
Fine thank you and you
[root@localhost yy]#
执行指令“comm a1 a2”比较排序文件 a1 和 a2,结果分三部分输出三部分的内容。第一部分是文件1单独含有的行;第二部分是文件2单独含有的行;第三部分是两个文件共有的行。如上所示。
范例430 比较排序文件,同时对文件进行输出选择。
[root@localhost yy]# cat a1 //显示文件a1的内容
Hello everyone
Hello everybody
How are you
Fine thank you and you
[root@localhost yy]# cat a2 //显示文件a2的内容
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
Fine thank you and you
[root@localhost yy]# comm -1 a1 a2 //比较排序文件a1和a2,文件a1单独含有的行不显示
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
Fine thank you and you
[root@localhost yy]# comm -2 a1 a2 //比较排序文件a1和a2,文件a2单独含有的行不显示
Hello everyone
Hello everybody
How are you
Fine thank you and you
[root@localhost yy]# comm -3 a1 a2 //比较排序文件a1和a2,文件a1和a2共有的行不显示
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
Hello everyone
Hello everybody
How are you
[root@localhost yy]#
执行指令“comm.-1 a1 a2”,“comm.-2 a1 a2” 和“comm.-3 a1 a2”比较排序文件 a1和a2,同时通过对参数的选择实现不同的输出。如上所示。
学习目标 掌握对文件格式进行编排的简单方法
语法 fmt [-可选参数] [文件]
功能说明 fmt 指令将依照指定的格式重排指定文件里的内容,然后输出到标准输出。若指令中未指定文件,从标准输入读取数据。
参数说明 必要参数的具体说明如下:

基础应用
范例431 对指定文件进行重新编排。
[root@localhost yy]# cat sr //显示文件sr的内容
asdfgjkjl
asdsfgfhgjk
adsfghjklk
asfghk
q
sjkdfgdjkfg
sdjkdfhdjkfg
jsdhfklh
hgskjg
[root@localhost yy]# fmt a1 //重新编排文件sr
asdfgjkjl asdsfgfhgjk adsfghjklk asfghk
q sjkdfgdjkfg sdjkdfhdjkfg jsdhfklh hgskjg
[root@localhost yy]# cat sr | fmt //重新编排文件sr
asdfgjkjl asdsfgfhgjk adsfghjklk asfghk
q sjkdfgdjkfg sdjkdfhdjkfg jsdhfklh hgskjg
[root@localhost yy]# cat sr
sdfgjkjl
asdsfgfhgjk
adsfghjklk
asfghk
q
sjkdfgdjkfg
sdjkdfhdjkfg
jsdhfklh
hgskjg
[root@localhost yy]#
执行指令“fmt sr” 和指令“cat sr | fmt”对文件 sr 重新进行编排。
范例432 对起始字符为指定字符串的列进行合并。
[root@localhost yy]# cat a1 //显示文件a1的内容
Hello everybody
Hello everyone
How are you
[root@localhost yy]# fmt –p hello a1 //对文件重新进行编排
Hello everybody Hello everyone
How are you
[root@localhost yy]#
执行指令“fmt –p hello a1”将从标准输入设备读取数据,然后进行编排。
范例433 从标准输入读取数据进行编排。
[root@localhost yy]# fmt //对输入数据进行重新编排
Afdsf ag
;agrsdfh
Fgjksdghfgj
Adfghfghj sdfh
Fgh //完成输入后按Ctrl+d退出
Afdsf ag ;agrsdfh Fgjksdghfgj Adfghfghj sdfh Fgh
[root@localhost yy]#
执行指令“fmt”将从标准输入设备读取数据,然后进行编排。
学习目标 能对文件的列宽进行限制
语法 fold [-可选参数] [文件]
功能说明 fold 指令可用来调整文件的列宽,读取指定文件的内容,如果文件中某行的列数超出限定的列数,将超出部分截断作为新的一行在该行后输出,要求新增加的行也满足限定列宽。fold 指令也可从标准输入中读取数据,然后将结果输出到标准输出。fold 指令的功能和fmt指令有类似之处,学习的时候要注意区别。
参数说明 可选参数及其说明如下:

基础应用
范例434 调整文件的列宽。
[root@localhost yy]# fold -w 3 //从标准输入中读入文件
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa //“Ctrl+d”
a
aa
aaa
aaa
a
aaa
aa
aaa
aaa
aaa
aaa
a
[root@localhost yy]#
执行指令“fold -w 3”从标准输入设备中读取数据,然后将结果输出到标准输出设备,如本例所示。
范例435 调整文件的列宽,同时保存调整后的文件。
[root@localhost yy]#ls
a1.txt sr yy
[root@localhost yy]# fold -w 3 >aa.txt //从标准输入中读入文件
a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa //“Ctrl+d”
[root@localhost yy]#ls
a1.txt aa.txt sr yy
[root@localhost yy]#cat aa.txt
a
aa
aaa
aaa
a
aaa
aa
aaa
aaa
aaa
aaa
a
[root@localhost yy]#
执行指令“fold -w 3 > aa.txt”从标准输入设备中读取数据,然后将结果输出到指定文件aa.txt中,如本例所示。
学习目标 掌握匹配搜索的方法
语法 grep [-可选参数] 查找模式 [文件或者目录]
功能说明 grep 指令用于查找文件中符合指定模式的行,并将其输出到标准输出设备。如果指令中未指定文件名,将会从标准输入中读取数据。
参数说明 可选参数及其说明如下:


【ACTION的值】
read:将目录视为一般文档文件进行处理,预设的 ACTION 的值为 read。
skip:忽略目录不处理。
recurse:相当于-r 参数,递归处理目录下的文件。
基础应用
范例436 在指定文件中查找含有匹配字符串的行。
[root@localhost yy]# cat sr //显示文件sr的内容
asd fgjkjl
asdsfgfhgjk
adsfghjklk
asfghk
q
sjkdfgdjkfg
sdjkdfhdjkfg
jsdhfklh
hgskjg
[root@localhost yy]# grep as sr //在指定文件 sr查找匹配字符串“as”
asd fgjkjl
asdsfgfhgjk
asfghk
[root@localhost yy]# egrep as sr //在指定文件 sr查找匹配字符串“as”
asd fgjkjl
asdsfgfhgjk
asfghk
[root@localhost yy]# fgrep as sr //在指定文件 sr查找匹配字符串“as”
asd fgjkjl
asdsfgfhgjk
asfghk
[root@localhost yy]#
执行指令“grep as sr”,“egrep as sr”和“fgrep as sr”查找指定文件中含有字符串“as”的行,并将查找到的行输出到标准输出,输出结果如上所示。我们知道egrep、fgrep和grep指令都是用于实现指定模式搜索的指令,其中grep指令一次只搜索一个指定的模式,egrep是扩展的grep指令,能检索正则表达式,而fgrep指令则是快速grep。
范例437 在多个指定文件中查找含有匹配字符串的行。
[root@localhost yy]# cat a2 //显示文件a2的内容
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
aaaaaaaaaaaa
fine thank you and you
[root@localhost yy]# grep a a2 sr //在指定文件 a2和文件 sr中查找匹配字符串“as”
a2:aaaaaaaaaaaa
a2:aaaaaaaaaaaa
a2:aaaaaaaaaaaa
a2:aaaaaaaaaaaa
a2:fine thank you and you
sr:asd fgjkjl
sr:asdsfgfhgjk
sr:adsfghjklk
sr:asfghk
[root@localhost yy]#
执行指令“grep a a2 sr”查找指定文件 a2 和文件 sr 中含有字符“a”的行,并将查找到的行输出到标准输出。如上所示。
范例438 查找含有匹配字符串的行,同时显示其后两行的内容。
[root@localhost yy]# grep –A 2 ads sr //查找匹配字符串“ads”同时显示匹配行及其后两行的内容
adsfghjklk
asfghk
[root@localhost yy]#
执行指令“grep –A 2 ads sr”查找指定文件 sr 中含有字符串“ads”的行,并将查找到的行以及该行的后两行输出到标准输出。
范例439 按照范本文件中给出的查找模式进行查找。
[root@localhost yy]# cat a3 //显示范本文件a3的内容
asd
ads
fg
sf
[root@localhost yy]# grep –f a3 sr //查找符合范本文件中查找模式
asd fgjkjl
asdsfgfhgjk
adsfghjklk
asfghk
sjkdfgdjkfg
sdjkdfhdjkfg
[root@localhost yy]#
执行指令“grep –f a3 sr”查找指定文件 sr 中含有范本文件中指定查找模式的行,并将查找到的行输出到标准输出。
范例440 列出目录下所有符合查找模式的文件名。
[root@localhost yy]# grep –l as * //列出所有符合查找模式的文件
a3
ar.txt
df.txt
h
h1.txt
ls.man.txt
sr
sr.txt
tt
ypbind
[root@localhost yy]#
执行指令“grep –l as *”l 列出所有符合查找模式的文件名。
范例441 反转显示所有不满足查找模式的行。
[root@localhost yy]# grep -v asd sr //列出文件sr中不含“asd”的行
adsfghjklk
asfghk
q
sjkdfgdjkfg
sdjkdfhdjkfg
jsdhfklh
hgskjg
[root@localhost yy]#
执行指令“grep -v asd sr”显示指定文件 sr 中不符合查找模式“asd”的所有行。
范例442 将查找模式看作word的形式对文件进行索引。
[root@localhost yy]# grep -w asd sr //将字符串“asd”看作word形式
asd fgjkjl
[root@localhost yy]#
执行指令“grep -w asd sr” 将查找模式看作 word 的形式对文件进行索引。
学习目标 学会使用 ispell 指令对文件进行拼写检查
语法 ispell [-可选参数] [文件]
功能说明 ispell 指令使用/usr/lib/ispell/english.hash 下的预设字典来检查指定的文件。如果检查到文件中存在预设字典里没有的词汇,会建议你使用的词汇或让你将新的词汇加入个人字典。
参数说明 可选参数及其说明如下:

基础应用
范例443 检查指定文件。
[root@localhost yy]# cat a11 //显示文件a11的内容
Hello everybody
Hello everyone
How are you
Linux
Red hat Linux
[root@localhost yy]# ispell a11 //检查文件a11
输入指令“ispell a2”回车将显示如下内容。
Hello everybody
Hello everyone
How are you
Linux
Red hat Linux
1)Linux 6)Linuxes
2)lynx 7)lix
3)Linus 8)linkup
4)links 9)Linc‘s
5)Linc 0)Link
i)Ignore I)Ignore all
r)Replace R)Replace all
a) Add l) Add Lower
b) Abort x)Exit
?
如果输入数字1,将文件中第四行中的Linux替换为Linux。这时的显示如下:
Hello everybody
Hello everyone
How are you
Linux
Red hat Linux
1)Linux 6)Linuxes
2)lynx 7)lix
3)Linus 8)linkup
4)links 9)Linc‘s
5)Linc 0)Link
i)Ignore I)Ignore all
r)Replace R)Replace all
a) Add l) Add Lower
b) Abort x)Exit
?
如果不想替换可按x键直接退出。
[root@localhost yy]# cat a11 //显示文件a11的内容
Hello everybody
Hello everyone
How are you
Linux
Red hat Linux
[root@localhost yy]#
在执行完成后查看文件a11的内容可发现文件的拼写已更改。
本例使用指令“spell -d american iptables.sh”指定词典为美语词典进行检查。
学习目标 会运用 join 指令连接两个不同文件
语法 join [-可选参数] 文件 1 文件 2
功能说明 join 指令可以找出文件中指定栏位相同的行,然后连接两个指定的文件,输出到标准输出设备。
参数说明 可选参数及其说明如下:

基础应用
范例444 连接两个文件中栏位相同的行。
[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]# cat b2 //显示文件b2的信息
1 b2 0025
2 b2 0017
3 b2 0119
4 b2 0226
5 b2 0068
7 b2 0001
[root@localhost yy]# join b1 b2 //连接两个文件
1 b1 1024 b2 0025
2 b1 1133 b2 0017
3 b1 0981 b2 0119
4 b1 1321 b2 0226
5 b1 1987 b2 0068
[root@localhost yy]#
执行指令“join b1 b2”,将文件 b1 和 b2 中栏位相同的部分连接起来,连接的顺序与指令中文件名的先后有关,一般情况下空格作为栏位的区分。
范例445 连接两个文件中栏位相同的行,同时显示选中文件中不相同的行。
[root@localhost yy]# cat b1 //显示文件b1的信息
1 b1 1024 1
2 b1 1133 2
3 b1 0981 3
4 b1 1321 4
5 b1 1987 5
6 b1 1877 6
[root@localhost yy]# cat b2 //显示文件b2的信息
1 b2 0025 1
2 b2 0017 2
3 b2 0119 3
4 b2 0226 4
5 b2 0068 5
7 b2 0001 7
[root@localhost yy]# join –a1 b1 b2 //连接两个文件b1和b2,同时显示文件b1中的栏位不同的行
1 b1 1024 1 b2 0025 1
2 b1 1133 2 b2 0017 2
3 b1 0981 3 b2 0119 3
4 b1 1321 4 b2 0226 4
5 b1 1987 5 b2 0068 5
6 b1 1877 6
[root@localhost yy]# join –a2 b1 b2 //连接两个文件b1和b2,同时显示文件b2中的栏位不同的行
1 b1 1024 1 b2 0025 1
2 b1 1133 2 b2 0017 2
3 b1 0981 3 b2 0119 3
4 b1 1321 4 b2 0226 4
5 b1 1987 5 b2 0068 5
7 b2 0001 7
[root@localhost yy]#
执行指令“join –a num b1 b2”,将文件 b1 和 b2 中栏位相同的部分连接起来,同时显示num指定的文件里栏位不同的行。num取得的数字1或2与文件在指令中的顺序是相关的, 1代表前者,2代表后者。
范例446 连接指定栏位相同的文件。
[root@localhost yy]# cat b1 //显示文件b1的信息
1 b1 1024 1
2 b1 1133 2
3 b1 0981 3
4 b1 1321 4
5 b1 1987 5
6 b1 1877 6
[root@localhost yy]# cat b2 //显示文件b2的信息
1 b2 0025 1
2 b2 0017 2
3 b2 0119 3
4 b2 0226 4
5 b2 0068 5
7 b2 0001 7
[root@localhost yy]# join –1 4 b1 b2 //将文件b1的指定栏位与b2中的预设相比较
1 1 b1 1024 b2 0025 1
2 2 b1 1133 b2 0017 2
3 3 b1 0981 b2 0119 3
4 4 b1 1321 b2 0226 4
5 5 b1 1987 b2 0068 5
[root@localhost yy]# join –2 4 b1 b2 //将文件b2的指定栏位与b1中的预设相比较
1 b1 1024 1 b2 0025
2 b1 1133 2 b2 0017
3 b1 0981 3 b2 0119
4 b1 1321 4 b2 0226
5 b1 1987 5 b2 0068
[root@localhost yy]# join –j 4 b1 b2 //将文件b1与b2中的指定栏位相比较
1 b1 1024 1 b2 0025
2 b1 1133 2 b2 0017
3 b1 0981 3 b2 0119
4 b1 1321 4 b2 0226
5 b1 1987 5 b2 0068
[root@localhost yy]#
执行指令“join –1/2 栏位 b1 b2”,当指令中的参数为–1 时指定的是文件 1 的栏位,文件2是预设栏位;当指令中的参数为–2时指定的栏位是文件2的栏位,文件1是预设栏位。这里的参数–1/2 的意思与上面提到的 num 代表的意义相同。执行指令“join –l 栏位 b1 b2”同时指定了文件1和文件2的比较栏位。
学习目标 掌握 look 指令进行英文单字查询的方法
语法 look [-可选参数] 字首字符串 [文件]
功能说明 使用 look 指令进行英文单字查询时,根据输入的字首字符串,会输出所有符合该条件的单字。
参数说明 可选参数及其说明如下:

基础应用
范例447 查找以word作为起始字符串的单字。
[root@localhost ~]# look word //开始查找
Word
word
wordable
wordably
wordage
wordages
word-beat
word-blind
word-book
wordbook
wordbooks
word-bound
wordbreak
word-breaking
wordbuilding
------------------------------------------------------------
------------------------------------------------------------
wordstar
wordster
word-stock
Wordsworth
Wordsworthian
wordsworthian
wordsworthianism
word-wounded
wordy
[root@localhost ~]#
执行指令“look word”后,在标准输出设备上输出所有预设字典上含有的以指定字符串作为字首的单字。
学习目标 能使用 sort 指令对文本文件内容进行排序
语法 sort [-可选参数] [文件]
功能说明 利用 sort 指令可以对指定的文本文件的内容一行为单位进行排序。
参数说明 可选参数及其说明如下:

基础应用
范例448 对文件的内容进行排序。
[root@localhost yy]# cat b3 //显示文件b3的信息
9 b1 1024 0
6 b1 1133 1
3 b1 0981 2
5 b1 1321 3
7 b1 1987 4
2 b1 1877 5
1 b2 0025 6
4 b2 0017 7
8 b2 0119 8
0 b2 0226 9
[root@localhost yy]# sort b3 //对文件b3进行排序
0 b2 0226 9
1 b2 0025 6
2 b1 1877 5
3 b1 0981 2
4 b2 0017 7
5 b1 1321 3
6 b1 1133 1
7 b1 1987 4
8 b2 0119 8
9 b1 1024 0
[root@localhost yy]#
执行指令“sort b3”对文件 b3 进行排序,然后输出到标准输出。
范例449 对文件的内容进行逆排序。
[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]# sort –r b1 //对文件b1的内容进行逆排序
6 b1 1877
5 b1 1987
4 b1 1321
3 b1 0981
2 b1 1133
1 b1 1024
[root@localhost yy]#
执行指令“sort –r b1”对文件 b1 进行逆排序,然后输出到标准输出。
学习目标 掌握使用 spell 指令进行拼字检查的方法,比较 spell 指令和 ispell 指令的使用方法
语法 spell
功能说明 spell 指令可检查从标准输入设备输入的字符串有否拼写错误,如果检查到拼写错误,在输入结束后显示有拼写错误的字符。
基础应用
范例450 检查输入的字符串。
[root@localhost ~]# spell //检查字符串
word
asddd
quit
sadf
save
ffg
exit //完成从标准输入设备输入字符串
asddd
sadf
ffg
[root@localhost ~]#
执行指令spell检查从标准输入设备输入的字符串的拼写错误,在结束输入的同时将拼写错误的字符串在屏幕上输出。
学习目标 能使用 tr 指令转换文件中的字符
语法 tr [-可选参数] 字符串 1 [字符串 2]
功能说明 tr 指令将标准输入输入的字符串转换为指定的字符串,然后输出到标准输出设备。
tr指令从标准输入设备读取数据,经过字符串转译后,输出到标准输出设备。
参数说明 可选参数及其说明如下:

基础应用
范例451 字符串转换。
[root@localhost yy]# cat b1 | tr b1 na //将字符串b1转换为字符串na
1 na 1024
2 na 1133
3 na 0981
4 na 1321
5 na 1987
6 na 1877
[root@localhost yy]# cat b1 | tr b1 name //将字符串b1转换为字符串na
1 na 1024
2 na 1133
3 na 0981
4 na 1321
5 na 1987
6 na 1877
[root@localhost yy]#
执行指令“cat b1 | tr b1 na”将文件 b1 中的字符串 b1 转换为字符串 na。执行指令“cat b1 | tr b1 name”文件 b1 中的字符串 b1 转换为字符串 na 而非字符串 2 中指定的字符串 name。虽然两个指令中指定的字符串2长度不同,但输出到标准输出的结果相同。
范例452 删除所有输入文本中与字符串1相匹配的字符。
[root@localhost yy]# cat b1 | tr –d b1 //删除文本中与字符串b1相匹配的字符
024
2 33
3 098
4 32
5 987
6 877
[root@localhost yy]#
执行指令“cat b1 | tr –d b1” 删除文本中与字符串 b1 相匹配的字符,并输出到标准输出。
范例453 大小写字母转换。
[root@localhost yy]# cat a1
Hello everybody 1
Hello everyone 2
How are you 3
Fine thank you and you 4
I fine too 5
Linux 6
Red hat Linux 7
[root@localhost yy]# cat a1 | tr a-y A-Y //大小写字母转换
HELLO EVERYBODY 1
HELLO EVERYONE 2
HOW ARE YOU 3
FINE THANK YOU AND YOU 4
I FINE TOO 5
LINUX 6
RED HAT LINUX 7
[root@localhost yy]#
执行指令“cat a1 | tr a-y A-Y” 将文本中的字符转换为大写字母,并输出到标准输出。
学习目标 掌握检查及删除文本文件中重复出现的行
语法 uniq [-可选参数] [输入文件[输出文件] ]
功能说明 uniq 指令用来检查文件中重复出现的行,并将重复的部分删除。
参数说明 可选参数及其说明如下:

基础应用
范例454 显示文件中每行重复出现的次数。
[root@localhost yy]# cat ar //显示文件内容
Hello everybody
Hello everyone
How are you
Fine thank you and you
I fine too
Linux
Linux
Linux
Red hat Linux
[root@localhost yy]# uniq –c ar //显示每行重复出现次数
1 Hello everybody
1 Hello everyone
1 How are you
1 Fine thank you and you
1 I fine too
3 Linux
1 Red hat Linux
[root@localhost yy]#
执行指令“uniq –c ar”显示文件 ar 中每行重复出现的次数。
范例455 不显示文件中的重复行。
[root@localhost yy]# cat ar //显示文件内容
Hello everybody
Hello everyone
How are you
Fine thank you and you
I fine too
Linux
Linux
Linux
Red hat Linux
[root@localhost yy]# uniq ar //不显示文件中的重复行
Hello everybody
Hello everyone
How are you
Fine thank you and you
I fine too
Linux
Red hat Linux
[root@localhost yy]#
执行指令“uniq ar” 不显示文件中的重复行。
范例456 显示时忽略指定行。
[root@localhost yy]# cat ar //显示文件内容
Hello everybody
Hello everyone
How are you
Fine thank you and you
I fine too
Linux
Linux
Linux
Red hat Linux
[root@localhost yy]# uniq –f2 ar //显示时忽略指定行
Hello everybody
How are you
Fine thank you and you
I fine too
Linux
Linux
Linux
Red hat Linux
[root@localhost yy]# uniq –f4 ar //显示时忽略指定行
Hello everybody
Hello everyone
How are you
I fine too
Linux
Linux
Linux
Red hat Linux
[root@localhost yy]#
执行指令“uniq –f2 ar”和指令“uniq –f4 ar” 不显示指令中的指定行。
学习目标 掌握指定模式搜索的方法
语法 egrep [-可选参数] 查找模式 [文件]
功能说明 egrep 指令相当于指令“grep-e”。具体的使用方法见 grep 指令。
学习目标 掌握在 Ex 模式下启动 vim 文本编辑器的方法
语法 ex [-可选参数] [文件]
功能说明 ex 指令相当于指令“vi –E”,在 Shell 中输入 ex 指令将以 EX 模式启动 vim文本编辑器。在Ex模式下在vim中输入“vi”或“visual”,将从Ex模式回到普通模式。ex指令的语法及参数与vi指令相同。
基础应用
范例457 在Ex模式下启动vim文本编辑器。
[root@localhost ~]# ex //以Ex的模式启动vim文本编辑
执行指令“ex”,启动Ex模式下的vim文本编辑器。
学习目标 掌握指定模式搜索的方法
语法 fgrep [-可选参数] 查找模式 [文件]
功能说明 fgrep 指令相当于“grep –f”,在文件中查找符合条件的字符串。具体的使用方法见grep指令。
基础应用
范例458 字符匹配的反向选择。
[root@localhost ~]# cat abc //显示文件abc的内容
i am a student
i am from bj
i like sports
espacially basketball and football
my favorite football club is intermilan
i will love it for ever
oh,abc
[root@localhost ~]# fgrep -v bc abc //显示文件abc中不含“abc”的行
i am a student
i am from bj
i like sports
espacially basketball and football
my favorite football club is intermilan
i will love it for ever
[root@localhost ~]# fgrep bc abc //显示文件 abc 中含有“bc”的行
oh,abc
[root@localhost ~]#
实战思考
应用思考
1.使用指令“fgrep ab *”查找当前文件夹下含有字符串“ab”的文件,并将得到的文件信息输出到标准输出。
2.使用指令“fgrep -l ab *”列出当前文件夹下符合条件即含有字符串“ab”的所有文件。
学习目标 掌握如何使用 mtype 指令查看 MS-DOS 文件的内容
语法 mtype [-可选参数] 源文件 目标文件
功能说明 mtype指令是mtools工具指令,用来模拟MS-DOS的type指令,显示MS-DOS文件的内容。
参数说明
可选参数及其说明如下:

基础应用
范例459 显示mtype指令的版本信息。
[root@localhost ~]# mtype -V //显示版本信息
Mtype version 3.9.10,dated March 2nd,2005
Configured with the following options:enable-xdf disable-vold disable-new-vold
Disable-debug enable-raw-term
[root@localhost ~]#
执行指令“mtype -V”显示指令的版本信息。
学习目标 了解 vi 编辑器的使用方法
语法 vi [-可选参数] [文件]
功能说明 vi 指令是 Linux 下的文字编辑器。vi 是“Visual interface”的意思,即可视化的文字编辑器。具体内容参照vim指令讲解部分。
学习目标 能利用 wc 指令计算文件的字数
语法 wc [-可选参数] [文件]
功能说明 wc 指令可以用来计算指定文件的字节数、字数和行数,如果指令中未指定文件,将从标准输入设备中读取数据。
参数说明 可选参数及其说明如下:

基础应用
范例460 计算指定文件的字节数。
[root@localhost yy]# cat ar //显示文件内容
Hello everybody
Hello everyone
How are you
Fine thank you and you
I fine too
Linux
Linux
Linux
Red hat Linux
[root@localhost yy]# wc -c ar //计算字节数
109 ar
[root@localhost yy]#
执行指令“wc -c ar”计算文件 ar 的字符数。
范例461 计算指定文件的字数。
[root@localhost yy]# cat ar //显示文件内容
Hello everybody
Hello everyone
How are you
Fine thank you and you
I fine too
Linux
Linux
Linux
Red hat Linux
[root@localhost yy]# wc -w ar //计算字数
21 ar
[root@localhost yy]#
执行指令“wc -w ar”计算文件 ar 的字数。
范例462 从标准输入设备中读取数据计算行数。
[root@localhost yy]# wc -l //计算行数
The food
In this restaurant
Is out of this world
And don’t
Pad the bill
Like the restaurant
Down the street
7
[root@localhost yy]#
执行指令“wc -l”计算从标准输入设备中读取数据的行数。
范例463 计算从标准输入设备中读取数据的字节数、字数和行数。
[root@localhost ~]# wc //计算字节数、字数和行数
I have just returned
from a visit
to my landlord
Mr Hathcliff
I am delighted
with the house
I am renting from him
7 23 115
[root@localhost ~]#
执行指令“wc”显示从标准输入设备中读取数据的字节数、字数和行数。显示的顺序先是行数值为7,再是字数,总共23个单词,最后是字节115个。
实战思考
应用思考
1.使用“wc -c *(*代表已经存在的文件名称)”指令计算文件*的字符数。
2.使用“wc -w *(*代表已经存在的文件名称)”指令显示文件*的单词数。
学习目标 了解 ext2ed 指令的用法
语法 ext2ed
功能说明 ext2ed 指令是 red hat Linux 提供的用来处理硬盘分区上数据的指令。如果不是相当熟悉ext2文件的系统结构,建议使用ext2ed指令来修改硬盘分区中的数据。Ext2文件系统中是以块为单位来存储的,通常情况下每个块的大小为默认值1k,不同的块以块号区分,ext2文件系统的结构如下图所示。

基础应用
范例464 ext2文件系统编辑。
[root@localhost root]#ext2ed //文件系统编辑
本例使用指令ext2ed编辑文件系统。
学习目标 了解 view 和 vi 指令的关系
语法 view[必要参数][选择性参数][文件]
功能说明 view 指令用来编辑文字文件,连接 vi 指令。
参数说明 必要参数的具体说明如下:

选择性参数的具体说明如下:

【进入vi后的指令】
参见vi指令的说明。
基础应用
view指令的执行范例参见vi指令的执行范例。
语法 gedit[必要参数][选择性参数][文件]
功能说明 gedit 指令用来编辑文本文件。
参数说明 必要参数的具体说明如下:

选择性参数的具体说明如下:

基础应用
范例465 编辑文件。
[root@localhost littleProg]# gedit abc //编辑文件
本例使用指令“gedit abc”编辑文件。
学习目标 了解 nano 指令的基本应用
语法 nano[选择性参数][必要参数][文件]
功能说明 nano 指令是一个以取代 pico 指令为目标的小的、免费的、用户友好的编辑器。不只是复制pico指令的界面,nano指令同时执行一些在pico中没有的功能,如查找、替换和跳转到指定行数的功能。
参数说明 必要参数的具体说明如下:

选择性参数的具体说明如下:

【编辑指令】
Ctrl+G:帮助菜单。
Ctrl+X:关闭文件。
Ctrl+O:保存。
Ctrl+R:插入文件。
Ctrl+W:搜索特定的文件。
Ctrl+K:删除一行。
Ctrl+U:回到上一步。
Ctrl+A:移到行的开始处。
Ctrl+E:行的末尾。
Ctrl+D:删除光标所在的字符。
Ctrl+\:替换。
基础应用
范例466 编辑文件。
[root@localhost ~]# nano 123 //编辑文件123
GNU nano 1.3.5-cvs File: 123
a
ab
123
1234
abcde
abcdef
abcdefg
abcdefgh
abcdefghi
abcdefghij
abcdefghijk
abcdefghijkl
[ Read 12 lines ]
^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 Txt ^T To Spell
本例使用指令“nano 123”编辑文件 123。
范例467 直接跳转到指定行进行编辑。
[root@localhost ~]# nano +5 123 //编辑文件 123,光标跳转到第5 行
GNU nano 1.3.5-cvsFile: 123
a
ab
123
1234
abcde
abcdef
abcdefg
abcdefgh
abcdefghi
abcdefghij
abcdefghijk
abcdefghijkl
[ Read 12 lines ]
^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 Txt ^T To Spell
本例使用指令“nano +5 123”编辑文件,并且打开文件时直接跳转到第5 行进行编辑,这时光标停留在文件的第5行。
学习目标 掌握 pr 指令的用法
语法 pr[必要参数][选择性参数][文件]
功能说明 pr 指令对指定的文件进行编排,然后将结果输出到标准输出。
参数说明 必要参数的具体说明如下:

选择性参数的具体说明如下:

基础应用
范例468 编排文件。
[root@localhost ~]# cat 123 //显示文件123的内容
000000 00000000
111111 11111111
222222 22222222
333333 33333333
444444 44444444
555555 55555555
666666 66666666
777777 77777777
888888 88888888
999999 99999999
[root@localhost ~]# pr 123 > 456 //编排文件123
[root@localhost ~]# cat 456 //显示文件456的内容
2007-05-27 17:18 123 Page 1
000000 00000000
111111 11111111
222222 22222222
333333 33333333
444444 44444444
555555 55555555
666666 66666666
777777 77777777
888888 88888888
999999 99999999
[root@localhost ~]#
本例使用指令“pr 123 > 456”编排文件 123,将结果重定向到文件 456;并使用指令 cat456显示文件456的内容,显示的结果如上所示。
范例469 设置文件为3栏。
[root@localhost ~]# cat abc //显示文件内容
a
ab
abc
abcd
abcde
abcdef
abcdefg
abcdefgh
abcdefghi
abcdefghij
[root@localhost ~]# pr -3 abc>456 //编排文件
[root@localhost ~]# cat 456 //显示文件内容
2007-05-27 09:01 abc Page 1
a abcde abcdefgh
ab abcdef abcdefghi
abc abcdefg abcdefghij
abcd
[root@localhost ~]#
本例使用指令“pr -3 abc>456”编排文件 abc,分 3 栏显示文件内容,并将结果重定向到文件 456;本例还使用指令 cat 456 显示文件的内容,如上所示。
学习目标 学会使用 tail 指令显示文件的末尾部分内容
语法 tail[必要参数][选择性参数][文件]
功能说明 tail 指令用于读取文件的内容,将指定的文件的末尾部分输出到标准输出。不指定文件时,将把标准输入作为输入信息进行处理。
参数说明 必要参数的具体说明如下:

选择性参数的具体说明如下:

基础应用
范例470 显示文件的末尾内容。
[root@localhost ~]# tail -n 30 install.log //显示文件的末尾内容
GFS-kernel-2.6.11.8-20050601.152643.FC4.2.i586.rpm
GFS-kernel-smp-2.6.11.8-20050601.152643.FC4.2.i686.rpm
GFS-kernel-xen0-2.6.11.8-20050601.152643.FC4.2.i686.rpm
GFS-kernel-xenU-2.6.11.8-20050601.152643.FC4.2.i686.rpm
GFS-kernheaders-2.6.11.8-20050601.152643.FC4.2.i586.rpm
cman-kernel-2.6.11.5-20050601.152643.FC4.2.i586.rpm
cman-kernel-smp-2.6.11.5-20050601.152643.FC4.2.i686.rpm
cman-kernel-xen0-2.6.11.5-20050601.152643.FC4.2.i686.rpm
cman-kernel-xenU-2.6.11.5-20050601.152643.FC4.2.i686.rpm
cman-kernheaders-2.6.11.5-20050601.152643.FC4.2.i586.rpm
dlm-kernel-2.6.11.5-20050601.152643.FC4.2.i586.rpm
dlm-kernel-smp-2.6.11.5-20050601.152643.FC4.2.i686.rpm
dlm-kernel-xen0-2.6.11.5-20050601.152643.FC4.2.i686.rpm
dlm-kernel-xenU-2.6.11.5-20050601.152643.FC4.2.i686.rpm
dlm-kernheaders-2.6.11.5-20050601.152643.FC4.2.i586.rpm
glibc-2.3.5-10.i386.rpm
gnbd-kernel-2.6.11.2-20050420.133124.FC4.35.i586.rpm
gnbd-kernel-smp-2.6.11.2-20050420.133124.FC4.35.i686.rpm
gnbd-kernel-xen0-2.6.11.2-20050420.133124.FC4.35.i686.rpm
gnbd-kernel-xenU-2.6.11.2-20050420.133124.FC4.35.i686.rpm
gnbd-kernheaders-2.6.11.2-20050420.133124.FC4.35.i586.rpm
kernel-2.6.11-1.1369_FC4.i586.rpm
kernel-devel-2.6.11-1.1369_FC4.i586.rpm
kernel-smp-2.6.11-1.1369_FC4.i686.rpm
kernel-smp-devel-2.6.11-1.1369_FC4.i686.rpm
kernel-xen0-2.6.11-1.1369_FC4.i686.rpm
kernel-xen0-devel-2.6.11-1.1369_FC4.i686.rpm
kernel-xenU-2.6.11-1.1369_FC4.i686.rpm
kernel-xenU-devel-2.6.11-1.1369_FC4.i686.rpm
openssl-0.9.7f-7.i386.rpm
[root@localhost ~]#
本例使用指令“tail -n 30 install.log”显示文件 install.log 的末尾 30 行内容。
范例471 显示更新的log文件的末尾内容。
t@localhost:~# tcpdump >&2.log //监测tcp流量
本例使用指令“tcpdump >&2.log”检测网络 tcp 流量,并将结果重定向到文件 2.log。这个指令运行在一个单独的终端上。
同时,可以在另一个终端下显示文件内容。
root@localhost:~# tail -f 2.log //显示文件内容
17:10:42.886082 IP 192.168.88.46.1413 > 202.112.150.121.www: .ack 97401 win 17520
17:10:42.887368 IP 192.168.88.46.1413 > 202.112.150.121.www: .ack 98861 win 17520
17:10:42.923042 IP 192.168.88.46.1408 > 202.112.150.121.www: P3442022626:3442023397(771) ack 1727122249 win 17520
17:10:42.941150 IP 202.112.150.121.www > 192.168.88.46.1408: P 1:165(164) ack 771 win65535
17:10:42.959328 IP 192.168.88.46.1410 > 202.112.150.121.www: P 1:788(787) ack 1376 win16144
//此处省略了部分结果
17:10:43.514885 IP 192.168.88.2.telnet > 192.168.88.7.1683: .26348:27808(1460) ack 1win 5840
17:10:43.516126 IP 192.168.88.2.telnet > 192.168.88.7.1683: .27808:29268(1460) ack 1win 5840
17:10:43.516383 IP 192.168.88.7.1683 > 192.168.88.2.telnet: .ack 24888 win 17520
17:10:43.517426 IP 192.168.88.2.telnet > 192.168.88.7.1683: .29268:30728(1460) ack 1win 5840
17:10:43.518664 IP 192.168.88.2.telnet > 192.168.88.7.1683: .30728:32188(1460) ack 1win 5840
17:10:43.518919 IP 192.168.88.7.1683 > 192.168.88.2.telnet: .ack 27808 win 17520
17:10:43.519968 IP 192.168.88.2.telnet > 192.168.88.7.1683: .32188:33648(1460) ack 1win 5840
17:10:43.521206 IP 192.168.88.2.telnet > 192.168.88.7.1683: .33648:35108(1460) ack 1win 5840
17:10:43.521461 IP 192.168.88.7
本例使用指令“tail -f 2.log”显示文件 2.log 末尾的内容。因为文件 2.log 是始终更新的,所以通过参数“-f”的指定,tail指令会不断读取文件2.log的内容,不停地将更新的文件末尾的内容发送到标准输出。这在程序调试中非常有用。
范例472 显示多个文件的末尾内容。
root@localhost:~# tail -n 5 *.log //显示文件末尾内容
==> 1.log <==
17:01:27.241870 IP 202.112.146.68.1539 > iplab604.telnet: P 54717045:54717046(1) ack 2552300598 win 65335
1730 packets captured
2797 packets received by filter
1067 packets dropped by kernel
==> 2.log <==
17:12:22.600449 IP 192.168.88.7.1656 > 192.168.88.2.ssh: P 33792 69317:3379269369(52) ack 2677970800 win 16752
6064 packets captured
6226 packets received by filter
162 packets dropped by kernel
==> 7.log <==
17:19:08.600064 IP 192.168.88.2.ssh > 192.168.88.7.1656: P 3993: 4045(52) ack 2860 win8576
17:19:08.620153 arp who-has 211.71.75.1 tell 211.71.75.2
17:19:08.702110 IP 202.112.147.192.netbios-ns > 202.112.147.255.netbios-ns: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
17:19:08.709861 IPX 00123456.00:0a:e6:db:d2:fb.4000 > 00000000.ff:ff:ff:ff:ff:ff.0452: ipx-sap-nearest-req FileServer
17:19:08.710769 IP 192.168.88.2.telnet > 192.168.88.root@loca lhost:~#
本例使用指令“tail -n 5 *.log”显示多个文件 1.log,2.log 和 7.log 末尾的内容。
学习目标 能使用 zcat 查看压缩文件的内容
语法 zcat[必要参数][文件]
功能说明 zcat指令用于查看压缩文件的信息,并将压缩文件的信息输出到标准输出设备。
参数说明 必要参数的具体说明如下:

选择性参数的具体说明如下:

基础应用
范例473 显示压缩文件的内容。
[root@localhost temp]# zcat /usr/share/info/uucp.info-8.gz//显示压缩文件内容
This is uucp.info, produced by makeinfo version 4.1 from uucp.texi.
START-INFO-DIR-ENTRY
* UUCP: (uucp). Transfer mail and news across phone lines.
END-INFO-DIR-ENTRY
This file documents Taylor UUCP, version 1.07.
Copyright (C) 1992, 1993, 1994, 1995, 2002 Ian Lance Taylor
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided also
that the section entitled "Copying" are included exactly as in the
//此处省略了部分结果
* seven-bit in port file: port File.
* speed in port file: port File.
* speed in sys file: Placing the Call.
* speed-range: port File.
* spool: Miscellaneous (config).
* statfile: Log File Names.
* stream: port File.
* strip-login: Miscellaneous (config).
* strip-proto: Miscellaneous (config).
* sysfile: Configuration File Names.
* system: Naming the System.
* time: When to Call.
* timegrade: When to Call.
* timetable: Miscellaneous (config).
* transfer: File Transfer Control.
* type: port File.
* unknown: Miscellaneous (config).
* uuname: Miscellaneous (config).
* v2-files: Miscellaneous (config).
* version: port File.
[root@localhost temp]#
本例使用指令“zcat /usr/share/info/uucp.info-8.gz”显示/usr/share/info/ uucp.info-8.gz 的内容。由于显示内容较多,中间部分已省略,不影响本例阅读。