您的位置:首页 > 运维架构 > Linux

linux学习心得第5篇

2011-09-17 14:39 288 查看
前7章的一些重点总结:

cat 查看文件的方式是dump的,将整个文件倾泻到屏幕上的,如果内容比较长的话,通常也就会滚屏而过了

less,more 是分页查看文件的

less 是可以根据你所设定的模式来搜索字符串,可以向前、后翻页。这个经常用

more 默认是只能向后翻页

head # head -n 20 查看文件的前20行

tail # tail -n 20 查看文件的尾部后20行

# tail -f 查看完毕后,并不结束,而是等待显示新增的内容,所以经常用来查看一个正在处于增长状态的日志信息,crtl+c来推出

cut 命令用来将文件切成N段,并取其中的某些特定字段的

cut -d 指定分隔符,以什么为依据来分隔

-f[n-m] 指定我们切割后要选取的段号,通常和-d搭配使用

例子:

cut -d: -f1 /etc/passwd

root

bin

daemon

adm

lp

……

-c[n-m]指定从第几个字符到第几个字符

如 # cut -c2-6 /etc/passwd

表示选取/etc/passwd文件中任一行中第二到第六个字符

wc 命令 ,做统计一个文件中出现的行数、字数、字节数

例子:我们要统计/etc/下目录的个数

# ls -l /etc | grep -v "^total" | wc -l

这样就统计出来在/etc下文件的个数

sort命令 排序命令

可以将一个文本文件中的内容按照一定的顺序<默认升序>进行排序,按字符a~z的顺序,注意sort排序功能是在缓存中进行的,例如sort /etc/passwd

系统先将/etc/passwd这个文件放入缓存中,然后排序、显示到屏幕上。这对原文件没有任何影响。

如果我们要保存我们拍过顺序的文件,可以使用输出重定向>

sort /etc/passwd > ./sortpasswd

sort -o /etc/passwd /tmp/passwd.sort 保存

-r 逆序排序

-n 以数值来排序 如果不指定-n的话,我们对待0~9以ASCII码得形式来排序,默认以ASCII字符串为标准来排序。

-f 忽略大小写的

-u 把重复的行给去了 注意空白字符对我们来说是不可见的,但是对sort是可见的,注意空白的字符。

-t : 可以指定以什么来分段的,这里指定以:来分段的,但是默认是以空格来分段的

-k 可以指定以第几段来排序,一般和-t配合使用

例子:以/etc/passwd中UID大小来排序

sort -n -t : -k 3 /etc/passwd

uniq 命令的 也是可以排序的,而且是除去重复行来排序的,注意这里的重复行是指连在一起的,相同的才叫重复行, # sort sort.txt | uniq

但是uniq也有自己的一些特点,他可以显示出来每一行所被重复的次数,这时运用命令 "uniq -c"来显示特定行所重复的次数,运用"uniq -u"表示只显示没有重复的行,而运用 "uniq -d"表示只显示重复的行

grep: 全局搜索正则表达式,并打印之

grep [option] 'pattern' filename

在文本文件filename中去寻找匹配'pattern'格式的字符串,并将包含该字符串的那一行都显示出来

grep仅仅是支持基本的正则表达式,如果要让其支持扩展的需要-E选项

egrep=grep -E

fgrep[fast grep]=grep -F

"^$"这个是表示空白行,以开头开头,以结束结束

grep -v 显示出不被匹配到的语句

-i 忽略大小写

-A 显示上下文的

-B

-C

--color= auto<自动加颜色> never<不加颜色> 默认是会用颜色高亮的显示出来匹配到的串

例子:

#grep --color=audo 'r..t' /etc/passwd

会将/etc/passwd中符合'r..t'模式的字符串所在行显示出来,并且所匹配的字符串默认用红色来注明。如果要改颜色的话

# export GREP_COLOR='01;32'

#grep --color=audo 'r..t' /etc/passwd

会将/etc/passwd中符合'r..t'模式的字符串所在行显示出来,并且所匹配的字符串默认用绿色来注明。

3前景色 2表示颜色

1表示红色 2表示绿色 3表示蓝色

颜色是定制的,但是要导出个变量GREP_COLOR

例子: 我想在/etc目录下查找一个文件,文件名字中包含了pass字符串

#ls /etc | grep --color=auto 'pass'

passwd

passwd-

#

所以我们的grep通常和管道命令结合起来使用,此外我们还知道,在我们执行任何一个命令的时候,当我们这个命令执行结束以后,会有命令本身的返回值和命令是否成功的状态值<echo $?查看 0表示成功1表示失败> 。但是在有些时候我们仅仅需要的是命令执行后的状态,而不需要执行结果,这是我们需要重定向,如:

# grep --color=auto 'r..t' /etc/passwd > /dev/null

# echo $?

0

其中/dev/null是一个黑洞,可以塞任何东西,这条命令是通常用来抛弃掉返回值,但仍旧寻得到状态值用的

例子:假如我想从/etc/passwd这个文件中查找有没有一个叫做'stu'的用户,如果使用 #grep 'stu' /etc/passwd > /dev/null的话,也会将student这个用户给找出来,然后#echo $? 也显示为0.所以这样用是不恰当的,应当使用:

# cut -d: -f1 /etc/passwd | grep "^stu\>"

stu

#

egrep

不支持\{m\} 、\{m,n\}、\(……\) 这种表达式,而是将其化简了不需要\ ,取而代之的是{m}、{m,n}

例如:# egrep 'r.{2}t' /etc/passwd

不使用 # egrep 'r.\{2\}t' /etc/passwd 这种模式

但是 扩展的()和\(……\)意义是不样的 \(……\)在标准正则表达式中表示引用

而扩展的()的用法如下:

# egrep 'l(ov){2,3}er' /etc/passwd

表示在/etc/passwd这个文件中寻找 lovovover lovover 这两个字符

但是在标准正则表达式中是无法用# grep 'l(ov)\{2,3\}er' /etc/passwd 命令的

另外,我们在扩展表达式中可以用 + ? 来表示匹配的次数的

? ----->表示0或1次 如a?root 前面的a是可有可无的,但是broot是可以匹配的

+ ----->表示1~任意次

| 或者

例子:让你在文件中找到

"like you liker"或"love you lover"

# egrep "l(ik)|(ov)e "

注意,这一点弄的不好!!注意查资料

正则表达式<reg>

怎么强调正则表达式的作用都不为过

1 基本的正则表达式 grep

2 扩展的正则表达式 egrep

这两类支持的元字符是不同的

基本的正则表达式

元字符:就是一些 它所表示的意思不是他本身的意义 的一些字符

例如 * 、globing<文件名通配>{注意:但是正则表达式中的元字符和文件通配符的意义往往不一样}

1> . 表示任意单个字符

例如:r..t 和它匹配的有root rabt 等等

[] 例如 [abc]root 则aroot broot croot都是匹配的。 而abroot中的因后面broot字符是匹配的,所以abroot是匹配的

[^abc]root 表示用来匹配除了abc之外的字符 ^表示非

2> .* 表示任意长度任意字符 正则表达式中*表示做匹配次数的,默认是任意个 >=0

例如 a*root 和它匹配的有 aroot root aaroot aaaroot 但是abroot是不能匹配的,如果是

a.*root 则 abroot就是匹配的

3> p\{n\} 这个可以精确的匹配确定字符p并个数n的方式 例子:a\{2\}root 和它能匹配的就只能是aaroot

4> p\{m,n\} 这个表示匹配确定字符p,不少于m次,不多于n次

例子: a\{3,4\}root 所以和它匹配的就有:

aaaroot aaaaroot

p\{n,\} 这个表示匹配字符P最少n次,多则不限

5> 锚钉符

^root 表示root必须要出现在行首

root$ 表示root必须出现在行尾

\<root 表示root必须出现在词首

root\> 表示root必须出现在词尾

\<root\> 表示root出现在词首和词尾

\broot=\<root

root\b=root\>

\(...\) 前项引用

例子:

要匹配 love …… lover 的正则表达式是 \(love\).*\1r ----> \1 表示引用\(love\)中 的love字符

要同时匹配 like you liker 和 love you lover
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: