Chinaunix首页 | 论坛 | 博客
  • 博客访问: 432181
  • 博文数量: 52
  • 博客积分: 1076
  • 博客等级: 准尉
  • 技术积分: 821
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-18 20:05
个人简介

Hello World !

文章分类

全部博文(52)

文章存档

2016年(1)

2014年(1)

2013年(8)

2012年(38)

2011年(4)

分类: LINUX

2012-03-20 21:35:53

文本行编辑器――ed

ed命令语法:

ed [参数][文件]

实例:编辑一个文本文件readme.txt,实验子命令acidnwq

[root@localhost ~]# ed             激活 ed 命令

a                                  告诉 ed 要编辑新文件

My name is sheriff.             输入第一行内容

And I love Linux very much.     输入第二行内容

.                                  返回 ed 的命令行状态

i                                  告诉 ed 要在最后一行之前插入内容

I am 24.                           “I am 24.”插入“My name is Titan.”“And I love Perl very much.”之间

.                                 返回 ed 的命令行状态

c                                 告诉 ed 要替换最后一行输入内容

I am 24 years old.              “I am 24.”替换成“I am 24 years old.”(注意:这里替换的是最后输的内容)

.                                  返回 ed 的命令行状态

w readme.txt                         将文件命名为“readme.text”并保存(注意:如果是编辑已经存在的文件,只需要敲入 w 即可)

q                                   完全退出 ed 编辑器

[root@localhost ~]#                 返回到 Linux 系统的命令行状态

这是文件的内容是:

[root@localhost ~]#cat readme.txt <-

My name is sheriff

I am 24 years old.

And I love Linux very much.

[root@localhost ~]#

文本编辑器――ex

ex命令语法:

ex [文件名]

实例1:使用ex编辑器编辑文件readme.txt,在该文件的第5行插入字符串“hello world!”。

[root@localhost ~]#ex readme.txt

:1,6p

:4a!

hello world! [Ctrl]+c

:1,6p

实例2:使用ex编辑器编辑文件readme.txt,将该文件的第5行用字符串“hi ex editor!”替换。

[root@localhost ~]#ex readme.txt

:1,6p

:5c!

hi ex editor! [Ctrl]+c

:1,6p

实例3:使用ex编辑器编辑文件readme.txt,将该文件的第13行的内容删除。

[root@localhost ~]#ex readme.txt

:1,6p

:1,3d

:1,3p

实例4:使用ex编辑器编辑文件readme1.txt,显示在该文件的第110行内有字符串“Apache”的行。

[root@localhost ~]#ex readme1.txt

:1,10p

:1,10g/Apache/

实例5:使用ex编辑器编辑文件readme.txt,将文件中第35行的内容搬移到第6行之后。

[root@localhost ~]#ex readme.txt

:1,6p

:3,5m6

:1,6p

文本文件编辑器――jed

jed命令语法:

jed [参数][文件]

实例:使用编辑器jed编辑一个新文件demo.c

[root@localhost ~]#jed demo.c

文本编辑器――pico

pico命令语法:

pico [参数][文件]

实例:使用pico编辑一个文件readme.txt

[root@localhost ~]#pico readme.txt

文本流编辑器――sed

sed命令语法:

sed [参数][文本文件]

实例1:假定某个正在编辑的文件的其中一行是“The tiger cubs will meet on Tuesday after school”,现需要对该行多次修改,将“tiger”替换为“wolf”,“after”替换为“before”。

如果需要对同一文件或行作多次查找替换操作,可以有两种方法来实现。

第一种是使用“-e”选项,通知程序使用了多条查找替换命令。

[root@localhost ~]#echo The tiger cubs will meet on Tuesday after school | sed –e 's/tiger/wolf/' –e 's/after/before/'

第二种是使用分号来分隔多条查找替换命令,但使用该方法时需注意分号必须是紧跟斜线之后的下一个字符。如果两者之间有一个空格,操作将会失败并且返回一条错误消息。

[root@localhost ~]#echo The tiger cubs will meet on Tuesday after school | sed 's/tiger/wolf/; s/after/before/'

实例2:多次查找替换行信息。

假定某个正在编辑行信息如下:

The tiger cubs will meet on Tuesday at the same time

as the meeting last Tuesday

现要求对正在编辑行信息作多次查找替换工作,将“Tuesday”替换为“Thursday”。

该项需求看似简单,似乎与实例一没有区别。用实例一的方法试验如下:

[root@localhost ~]#echo The tiger cubs will meet on Tuesday at the same time

as the meeting last Tuesday | sed 's/ Tuesday / Thursday /'

为了将替换操作的控制范围覆盖到整个编辑的行信息,即在同一行中出现了多个要替换的单词的情况下,就必须指定在当前查询替换操作是面向全局范围。

[root@localhost ~]#echo The tiger cubs will meet on Tuesday at the same time

as the meeting last Tuesday | sed 's/ Tuesday / Thursday /g'

实例3:假定已经存在一个文本文件sample.txt,其内容如下,现希望用“2”替换“1”,但仅在单词“two”之后才作替换,而不是每一行的所有位置。

[root@localhost ~]#cat sample.txt

one 1

two 1

three 1

one 1

two 3

three 1

two 1

[root@localhost ~]#sed –e ‘/two/ s/1/2/’ sample.txt

one 1

two 2

three 1

one 1

two 3

three 1

two 2

实例4:显示上述文本文件sample.txt中第26行的信息。

[root@localhost ~]#sed -n ‘2,6p’ sample.txt

two 1

three 1

one 1

two 3

three 1

实例5:删除上述文本文件sample.txt中包含“two”的所有行。

[root@localhost ~]#sed ‘/two/ d’ sample.txt

one 1

three 1

one 1

three 1

实例6:使用sed命令将文字“hello world!”追加到文本文件sample.txt末尾。

[root@localhost ~]#sed ‘$a\hello world!\’ sample.txt

实例7:使用sed命令将文字“hello world!”插入到文本文件sample.txt的第三行之前。

[root@localhost ~]#sed ‘3i\hello world!\’ sample.txt

全屏幕文本编辑器――vi

vi命令语法:

vi [参数][文件...]

实例1:使用vi编辑器打开或新建一个文件。

通常使用vi命令时,直接在vi命令后指定一个文件名,当文件名指定的文件存在时,便会打开该文件;而当指定文件名的文件不存在时,系统会自动新建一个以指定文件名命名的文件。

[root@localhost ~]#vi +/computer demo.c

光标在文件被打开后定位在了“int computer(int a, int b)”行,原因在于对于使用了参数“+/computer”,该参数的意义就是从光标开始处向文件尾部去搜索匹配模式“computer”的行,搜索到第一个匹配模式的行后,将光标定位在该行行首。

实例2:使用vi编辑器向文件menu.c中插入文本。

[root@localhost ~]#vi menu.c

执行aAiIoO命令之一,使vi从一般模式切换至编辑模式。在编辑模式下用户可以全屏模式编辑打开的文档。

当所有的编辑工作完成以后,便可以通过按Escape键返回vi编辑器的普通模式,然后可以输入:命令使vi编辑器切换至命令行模式,最后执行wq命令保存编辑结果并退出vi编辑器。

实例3:复制文件/etc/man.config到当前的实验目录,使用vi编辑器编辑该文件以下一系列任务。

使用 vi 开启本目录下的 man.config 这个档案。

[root@localhost ~]#vi man.config

vi中设定一下行号。

使vi编辑器处于命令行模式,然后输入如下命令:

:set number

移动到第58行,向右移动40个字符,查看双引号内的目录。

使vi编辑器处于一般模式,然后输入如下命令。

58G    --作用是将光标移动到第58行。

40[->]  --作用是将光标向右移动40个字符,其中[->]表示向右的方向键。

此时可以看到光标定位处的双引号中是/dir/bin/foo目录。

移动到第一行,并且向下搜寻一下“Tutf8这个字符串,请问他在第几行?

使vi编辑器处于一般模式,然后输入如下命令。

1G     --作用是将光标移动到第1行。

/ Tutf8 --作用是向后搜索“Tutf8字符串。

此时可以看到光标定位在第98行处的“Tutf8”字符串所在的位置。

50~100行之间的man改为MAN,并且一个一个挑选是否需要修改,如何下达命令?

使vi编辑器处于命令行模式,然后输入如下命令。

:50,100 s/man/MAN/gc

此时可以看到光标定位在第51行,提示“man”将会被“MAN”字符串所替换。

在完成问题5所述的字符串替换操作后,想要全部复原。

方法一:使vi编辑器处于一般模式下,然后一直输入命令u直到全部复原。

此时可以看到光标定位在第51行,提示“man”将会被“MAN”字符串所替换。

方法二:使vi编辑器处于命令行模式下,执行命令q,不保存数据退出vi系统,然后重新打开文件。

复制51~60行这十行的内容,并且贴到最后一行之后。使vi编辑器处于一般模式,然后输入如下命令。

51G     --作用是将光标移动到第51行。

10yy     --作用是从光标所在行开始向下复制10行数据。

G       --作用是将光标移动到文件末行。

p       --作用是在光标所在行后粘贴缓冲区中的数据。

删除1130行之间的20行。使vi编辑器处于一般模式,然后输入如下命令:

11G     --作用是将光标移动到第11行。

20dd     --作用是从光标所在行开始向下删除20行数据。

将这个文件另存成一个man.test.config的文件。使vi编辑器处于命令行模式,然后输入如下命令:

:w man.test.config  

储存并退出vi编辑器。使vi编辑器处于命令行模式,然后输入如下命令:

:wq!  

字符转换――tr

tr命令语法:

tr [参数][1字符集][2字符集]

实例1:建立如下描述的一个test.txt文本文件,通过trtest.txt文件中的所有“is”字符替换成“ok”。

[root@localhost ~]#cat test.txt

This is test 1

This is test 2

This is test 3

This is test 4

This is test 5

This is test 6

This is test 7

This is test 8

[root@localhost ~]#cat test.txt | tr is ok

Thok ok tekt 1

Thok ok tekt 2

Thok ok tekt 3

Thok ok tekt 4

Thok ok tekt 5

Thok ok tekt 6

Thok ok tekt 7

Thok ok tekt 8

实例2:将上述test.txt文件中的内容小写全部转换成大写。

[root@localhost ~]#cat test.txt | tr a-z A-Z

THIS IS TEST 1

THIS IS TEST 2

THIS IS TEST 3

THIS IS TEST 4

THIS IS TEST 5

THIS IS TEST 6

THIS IS TEST 7

THIS IS TEST 8

实例3:将上述test.txt文件中的空格全部转换成换行符(ASCII012)。

[root@localhost ~]#cat test.txt | tr ‘ ’ ‘\012’

经过上述的转换操作,将源文件中的每行数据中的空格变换成换行符。

查找文件里符合条件的字符串――grep

grep命令语法:

grep [参数][查找样式][文件或目录...]

实例1:显示文本文件test.txt中含有字符串“is”的行数。

[root@localhost ~]#grep –c is test.txt

实例2:显示文本文件test1.txt中不含有字符串“path”的行。

[root@localhost ~]#grep –v path test1.txt

实例3:列出至少含有一个“#include”字符串的头文件。

[root@localhost ~]#grep –l ‘^#include’ /usr/include/*

调整C源程序文件的格式――indent

indent命令语法:

indent [参数][源文件][-o 目标文件]

实例:利用indent命令格式化C源程序demo.c

[root@localhost ~]#cat demo.c

[root@localhost ~]#indent demo.c

[root@localhost ~]#cat demo.c

对文件中的行作唯一性检查――uniq

uniq命令语法:

uniq [参数] [输入文件] [输出文件]

实例1:如下建立一个范例文本文件testfile.txt。将该文件进行唯一化。

[root@localhost ~]#vi testfile.txt

this is line 1

this is line 1

this is line 2

this is line 2

this is line 3

this is line 3

this is line 3

this is line 4

[root@localhost ~]#cat testfile.txt

[root@localhost ~]#uniq testfile.txt

实例2:以上述范例文本文件testfile.txt为案例。显示该文件重复出现的行。

[root@localhost ~]#uniq -d testfile.txt

实例3:以上述范例文本文件testfile.txt为案例。显示该文件每行重复出现的次数。

[root@localhost ~]#uniq –c testfile.txt

实例4:以上述范例文本文件testfile.txt为案例。显示该文件中忽略第四个栏目后重复出现的行。

[root@localhost ~]#uniq –f 4 testfile.txt

调整打印机设置――tunelp

tunelp命令语法:

tunelp <外设号> [参数]

实例1:查看当前连接的打印设备所使用的中断请求。

[root@localhost ~]#tunelp /dev/lp0

实例2:设置当打印机忙碌时将数据送到打印机缓冲区的等待循环数目为10

[root@localhost ~]#tunelp /dev/lp0 -w 10

实例3:查看当前连接的打印设备的打印状态。

[root@localhost ~]#tunelp /dev/lp0 -s

打印文件――lpr

lpr命令语法:

lpr [参数][文件]

实例1:在打印机printer上打印3份文件/usr/share/doc/grep-2.5.1/README

[root@localhost ~]#lpr -#3 –P printer /usr/share/do c/grep-2.5.1/README

实例2:在缺省的打印机上,将文件/usr/share/doc/grep-2.5.1/README/usr/share/doc/grep-2.5.1/THANKS合并后打印3份。

[root@localhost ~]#cat /usr/share/doc/grep-2.5.1/README /usr/share/doc/grep-2.5.1/THANKS | lpr -#3

实例3:在缺省的打印机上,将文件/usr/share/doc/grep-2.5.1/AUTHORS的打印作业名设定为authors_print_job

[root@localhost ~]#lpr -J authors_print_job /usr/share/d oc/grep-2.5.1/AUTHORS

删除打印文件――lprm

lprm命令语法:

lprm [参数][作业编号] [用户名...][-]

实例1:从缺省打印机队列中删除作业编号为21的打印作业。

[root@localhost ~]#lprm 21

实例2:从打印机队列printer中删除作业编号为22的打印作业。

[root@localhost ~]#lprm –P lp0 2

将文本文件转换为PostScript格式――enscript

enscript命令语法:

这个命令可以用来指定字体、标题、限定的格式化选项和假脱机选项。

enscript [参数][SpoolerO ptions][文件...]

实例1:在名为printer的打印机上打印文件/usr/share/doc/grep-2.5.1/README

[root@localhost ~]#enscript –d printer /usr/share/do c/grep-2.5.1/README

实例2:在缺省打印机上打印文件/root/enscript-1.6.4/src/main.c的双联印刷的效果。

[root@localhost ~]#enscript -2r /root/enscript-1.6.4/ src/main.c

打印机控制――lpc

lpc命令语法:

lpc [Command [Parameter . . .]]

显示打印队列――lpq

lpq命令语法:

lpq [+[Number]][-l|-W][-P 打印机][作业编号][用户名]

实例1:要显示打印机printer打印队列里的作业。

[root@localhost ~]#lpq -P printer

实例2:以长格式显示缺省打印机打印队列里的作业信息。

[root@localhost ~]#lpq -l

在一页上打印多个页面――mpage

mpage命令语法:

mpage [参数][file...]

实例1:查看mpage支持的页面类型。

[root@localhost ~]#mpage -b l

[root@localhost ~]#mpage -b ?

实例2:将文件/root/mpage-2.5.6/mpage.c转换为ASCII文件并送往打印机printer进行打印。

[root@localhost ~]#mpage -da -P printer /root/mpage-2.5.6/mpage.c

pr命令语法:

pr [参数][File ...|-]

实例1:输出包含页眉的文件readme1.txt,其中页标题为“My Report”。

[root@localhost ~]#pr –h “My Report” readme1.txt

实例2:以两列输出的方式,显示包含页眉的文件readme1.txt,其中页标题为“My Report”。

[root@localhost ~]#pr -2 –h “My Report” readme1.txt

 

阅读(1807) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~