《Linux指令从入门到精通》——4.4 Linux下的文本编辑指令

4.4 Linux下的文本编辑指令

4.4.1 col指令:过滤控制字符
学会滤除控制字符

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 控制字符已经滤出。

4.4.2 colrm指令:删除指定的列
学会删除文件中的指定列

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

4.4.3 comm指令:比较排序文件
掌握对两个有序文件进行比较的方法

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,同时通过对参数的选择实现不同的输出。如上所示。

4.4.4 fmt指令:编排文本文件
掌握对文件格式进行编排的简单方法

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”将从标准输入设备读取数据,然后进行编排。

4.4.5 fold指令:限制文件列宽
能对文件的列宽进行限制

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中,如本例所示。

4.4.6 grep指令 :匹配搜索
掌握匹配搜索的方法

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的形式对文件进行索引。

4.4.7 ispell指令:拼字检查程序
学会使用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”指定词典为美语词典进行检查。

4.4.8 join指令:连接两个指定的文件
会运用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的比较栏位。

4.4.9 look指令:单字查询
掌握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”后,在标准输出设备上输出所有预设字典上含有的以指定字符串作为字首的单字。

4.4.10 sort指令:将文本文件内容加以排序
能使用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进行逆排序,然后输出到标准输出。

4.4.11 spell指令:拼字检查程序
掌握使用spell指令进行拼字检查的方法,比较spell指令和ispell指令的使用方法

spell

spell指令可检查从标准输入设备输入的字符串有否拼写错误,如果检查到拼写错误,在输入结束后显示有拼写错误的字符。

范例450 检查输入的字符串。

[root@localhost ~]# spell                    //检查字符串
word
asddd
quit
sadf
save
ffg
exit                                           //完成从标准输入设备输入字符串
asddd
sadf
ffg
[root@localhost ~]#

执行指令spell检查从标准输入设备输入的字符串的拼写错误,在结束输入的同时将拼写错误的字符串在屏幕上输出。

4.4.12 tr指令:转换文件中的字符
能使用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” 将文本中的字符转换为大写字母,并输出到标准输出。

4.4.13 uniq指令:检查文件中重复出现的行
掌握检查及删除文本文件中重复出现的行

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” 不显示指令中的指定行。

时间: 2024-09-17 04:31:01

《Linux指令从入门到精通》——4.4 Linux下的文本编辑指令的相关文章

《Linux指令从入门到精通》——导读

前言 Linux属于开源的自由软件,程序员和爱好者可以根据自己的喜好参与到其设计和开发工作中并且任意传播,因此它受到广大计算机爱好者的喜爱.除此之外,由于UNIX操作系统是收费的,任何使用UNIX操作系统或想要学习UNIX操作系统的人都需要支付高额的费用,而Linux是开源的类UNIX操作系统,具有UNIX的所有功能,程序员可以从Linux着手学习.对于很多用惯了Windows系统图形界面且刚开始接触Linux的用户来说,一本Linux指令速查宝典是必备的工具书. 目录 第 4 章 常用文本编辑

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

4.2 Linux下的简单文字模式文本编辑器 Linux下的文本编辑器种类很多,功能的复杂程度和操作的难易度也不尽相同.在此我们将其大致分为可视和不可视两种.在本节中讲解的ed,jed,joe,pico和sed都属于不可视编辑器,不能进行全屏方式下的操作,操作相对简单.但可视编辑器的交互功能更好,典型的可视编辑器有vi和emacs,这将在下一节中讲述. 4.2.1 ed指令:简单的行文本编辑器 理解行编辑的概念,掌握ed指令进行简单的行文本编辑的方法 ed [参数] [文件名] ed指令是Lin

《Linux指令从入门到精通》——4.3 Linux下全屏幕文本编辑器的命令行方式

4.3 Linux下全屏幕文本编辑器的命令行方式 4.3.1 emacs:文本编辑指令 初步了解emacs编辑器的基础功能,学会使用emacs指令来进行文本编辑.电邮收发等各项功能. emacs [-可选参数] [文件名] Emacs (Editor MACroS编辑器宏) 是一个功能强大的文本编辑器.该指令不仅可以用来编辑文本文件,还可以收发电邮.编辑远程文档.通过Telnet登录远程主机.登录IRC.查看日历.支持多种编程语言(如C/C++,Perl,Python,Lisp等).管理日程和个

《Linux指令从入门到精通》——第 4 章 常用文本编辑与处理指令的使用 4.1Linux下的文本编辑简介

第 4 章 常用文本编辑与处理指令的使用 4.1 Linux下的文本编辑简介 文本编辑器是用作编写普通文字的应用软件,它与文档编辑器的不同之处在于它并非用作桌面排版,而是常用来编写程序的源代码.本章将为大家讲述命令行模式下的文本编辑和处理指令的具体使用方法. 文本编辑是Linux中最基本的应用之一,它不仅可以实现纯文本文件的创建.格式编辑等,还可以用来编写程序代码.在Linux系统中,我们也常常使用文本文件来保存系统以及用户的配置信息.

《Linux C编程从入门到精通》一1.4 Linux的常用命令

1.4 Linux的常用命令 Linux C编程从入门到精通 在Shell中,用户需要通过使用适当的命令来完成相应的操作,本小节将介绍Linux中的部分常用命令. 1.4.1 文件操作命令 文件操作是Linux系统里最基本也是最常用的操作,本节列举了Linux中经常执行的一些普通文件操作命令. 1.显示文件列表 显示指定工作目录中所包含内容的命令是ls.要说明的是,ls命令列出的是文件的名字,而不是文件的内容.该命令的使用方式如下. ls [选项] [文件目录列表] ls命令中的常用选项如表1.

《Linux C编程从入门到精通》》一导读

前言 Linux C编程从入门到精通 行业背景 Linux操作系统是一种类UNIX操作系统,其代码是开源的,任何开发者.爱好者都可以免费使用,因此一经推出便风靡世界.Linux自从面世以来,经不同开发者和程序员的开发,现在存在着许多不同的版本,这些版本的根本都在于使用了Linux内核.当前,Linux操作系统安装在各种各样的计算机设备中,包括手机.平板电脑.游戏控制器.台式计算机.大型机和超级计算机.Linux是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统.

《Linux C编程从入门到精通》一第1章 Linux基础1.1 Linux的起源、发展和分类

第1章 Linux基础 Linux C编程从入门到精通 Linux是一套免费使用和自由传播的类UNIX操作系统,它已发展成为现今世界上最流行的一种操作系统.Linux不仅仅能在PC机上运行,随着嵌入式系统的发展,它已经被广泛地应用于各种场合. 1.1 Linux的起源.发展和分类 Linux C编程从入门到精通 Linux从1991年问世到现在已经有20多年的历史,它从一个架构简单的系统内核发展到了现在结构完整.功能丰富的多版本操作系统,本小节将介绍其起源发展和分类. 1.1.1 Linux的起

《Linux C编程从入门到精通》一1.3 Shell的使用基础

1.3 Shell的使用基础 Linux C编程从入门到精通 由于在C语言开发中常常需要和Shell打交道,本小节将简要介绍Shell的基本使用方法,终端的运行界面可以参考图1.5,以下仅仅给出在其中进行操作的相应字符串. 1.3.1 Shell命令的标准格式 Shell和用户交互是以字符串形式存在的命令和命令输出反馈的方式进行的,在Linux命令行中输入的第一个字符串必须是一个命令的名字,第二个字符串是命令的选项或参数,命令行中的每个字符串必须由空格键或Ta键隔开,格式如下. $ 命令 选项

《Linux C编程从入门到精通》》一2.4 Linux中的调试环境gdb

2.4 Linux中的调试环境gdb Linux C编程从入门到精通 从图2.1中可以看到,在实际开发过程中,程序除了语法正确之外,还必须符合设计者的逻辑意图.如果结果不正确,则可以通过相应的调试环境来跟踪调试,本小节将介绍Linux中最常用的gdb调试环境. Linux包含了一个gdb的调试程序,gdb是一个用来调试C程序的强大的调试器,它使程序员能在程序运行时观察程序的内部结构和内存的使用情况.gdb提供了以下一些功能. 监视程序中变量的值. 设置断点以使程序在指定的代码行上停止执行. 一行