您的位置:首页 > 职场人生

RHCE课程-初级部分5、常用文本处理命令,输入输出重定向,管道

2008-11-05 17:57 344 查看
Cat 文件名
cat是concatenate的缩写,所以它的作用其实是连接文件。但默认情况下它会将连接文件的结果送到标准输出。所以我们常用来显示文件内容。类
似于dos中的type。
More文件名
当一个文件的内容超过一屏后,我们可以用more这个指令来逐屏察看文件内容。
Less文件名
less在more的基础上,更可以逐行察看,前后翻页。
cp
cp是copy的缩写,可以用来将一个文件复制为另一个文件。所以cp的格式应该是cp[源文件][目标文件]。cp相当于dos中的copy。(-R递归)
mv
mv是move的缩写,可以用来将一个文件移动到另一个位置。同时,移动的过程中可以改变文件的名字,当目标文件名与源文件名不一致时,mv就起到了rename的作用。mv相当于dos中的move和rename。
rm
rm是remove的缩写,可以用来删除一个文件。rm相当于dos中的delete。
wc
wc用来统计一个文件的行数(-l)、词数(-w)、字符数(-c)并送到标准输出。
grep
grep用来从一个文件中找出匹配指定关键字的那一行,并送到标准输出。
head
显示文件开头部分内容,默认显示十行参数 --lines或者 –n 指明显示行数
tail
tail显示文件结尾部分内容,参数 -f 显示文件的纪实更新,用于监视日志文件

wc
wc用来统计一个文件的行数、词数、字数并送到标准输出。也可以用-l(行数)、-w(词数)、-c(字数)来指定输出内容。
grep
grep用来从一个文件中找出匹配指定关键字的那一行,并送到标准输出。结合管道,我们通常用它来过滤搜索结果,例如:
[Lonny@stationXX Lonny] $ ls -a | grep bash
.bash_history
.bash_logout
.bash_profile
.bashrc
grep支持用扩展的正则表达式来进一步定义关键字,具体如下:
. 替代任何一个单一字符
.* 替代零个或任意个字符
[abc] 替代a、b或c
[^abc] 替代除了a、b、c以外的字符
a* 替代空、a、aa、aaa、乃至更多个a
a? 替代一个或零个单独的a
a+ 替代a、aa、aaa乃至更多个a
a\{n\} 替代重复了n次的a
^a 替代以a为首的行
a$ 替代以a为尾的行
sort
sort用来按各种需要重新排列文本,一般运用在一个管道之后。例如:
[Lonny@stationXX Lonny] $ ls -a | grep bash | sort
.bash_history
.bash_logout
.bash_profile
.bashrc
[Lonny@stationXX Lonny] $ ls -a | grep bash | sort -r
.bashrc
.bash_profile
.bash_logout
.bash_history
默认情况下sort按照字母顺序排列文本。
-n 按照数字排序
-r 反向排序
-u 将重复的行去除
diff
diff用于比较两个文件之间的区别,并送到标准输出。输出时先报告两个文件的哪一行不同。
<表示是前一个文件的内容 ,>表示后一个文件的内容。例如:
[Lonny@stationXX Lonny] $echo “begin1”>file1
[Lonny@stationXX Lonny] $echo “begin2”>file1
[Lonny@stationXX Lonny] $diff file1 file2
1c1
<begin1
----
>begin2

diff - 报告文本差异内容
uniq - 去除文件中重复的行
cut -显示文件中的某一列
paste - 将文本按列拼接

diff
该命令告诉用户,为了使两个文件 file1 和 file2 一致,需要修改它们的哪些行。
#diff file1 file2
字母(a、d和c)之前的行号(n1,n2)是针对file1 的,其后面的行号(n3,n4)是针对 file2 的。字母 a、d 和 c 分别表示附加、删除和修改操作。
uniq
uniq用于去除文本中重复的行。-u参数可以只显示那些没有被重复过的行。-d显示有被重复过的行。
cut
cut可以根据一个指定的标记(默认是tab)来为文本划分列,然后将此列显示,例如:
[root@stationXX root] $ cut –f 1 –d : /etc/passwd
-d表示以什么分隔符,-f显示第几列
paste
paste将几份文集那按照列的方式拼接。默认情况下,新文件的列分隔符是tab,也可以用-d参数指定分隔符

流编辑器sed (Stream Editor)
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;sed –n
-n 关闭默认的输出而只输出那些带有p标志的行

例:查找/tmp/redhat文件中包括文本hello的所有行。
sed –n ‘/hello/p’ /tmp/redhat
例:查找/tmp/redhat文件中不包括hello的所有行
sed ‘/hello/d’ /tmp/redhat
d:从结果中删除匹配行
例:查找/tmp/redhat文件中”str1”的所有行,并将查找到的行的”str2”替换为”str3”
sed ‘/str1/s/str2/str3/g’ /tmp/redhat
s:全部行
g:替换这一行的所有匹配的字符

sed也可以将规则写成一个sed文件,使用’ –f ’来指定使用的脚本文件。
例:将/tmp/names文件中的“Zhang”替换为“Luo”,将“Wang”替换为“Zhao”
规则文件名:”nolatin”
/!/s/Zhang/Luo/g
/!/s/Wang/Zhao/g
#sed –f nolatin < /tmp/names

mkdir- 创立新目录
rmdir- 删除空目录

输入、输出、重定向
输入:过滤器的数据来源
标准输入stdin(0):默认是键盘
输出:过滤器的数据去向
标准输出stdout (1):默认是终端屏幕
错误输出 :报错讯息与标准输出走不同的I/O通道
标准错误输出stderr(2):默认是终端屏幕
重定向:标准输入、输出与错误输出,都可以用特定符号改变数据来源或去向

使用“<”来重定向输入源
大多数工具都会以其后的文件名为输入源
有一些过滤器一定需要添加 < 以明确输入源

使用 << 让系统将一次键盘的全部输入,先送入虚拟的‘当前文档’,然后一次性输入
需要一对字母、符号或字符串作为起始终结标识符
可以选择任意符号作为起始终结标识符

使用>改变数据输出目标
范例:
ls –l > listfile
将当前目录下的文件以长模式显示,然后写入listfile文件

使用>进行输出重定向,文件的原内容会被覆盖
使用>>,可以将输出追加入文件
ls –l >> listfile

错误重定向
系统错误与标准输出使用的I/O管道不同
默认情况下,系统报错会显示到终端屏幕上
使用2>将报错讯息重定向入一个文件
ls /luoli 2> /dev/null
使用2>>将报错讯息追加入一个文件
ls /luoli passwd 2>> results

使用 | 将前一个过滤器的输出直接送入后一个过滤器的输入
ls –l | grep pass
允许多重管道
注意管道前过滤器的输出与管道后过滤器的输入数据类型要匹配

ls –l | more
分屏显示当前目录下的文件
cat filea > fileb
拷贝filea到fileb
cat file* > file
将数个小文件合并成一个文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 休闲 RHCE培训