1、cat : 查看文件所有内容,并输出到终端 -n : 打印行号

2、more : 分页查看文件,按回车向下翻,空格直接翻页,缺点:只能看一遍,只能从上往下翻。 可配合使用 : man ls | more  

3、less : 文本查看工具,可以任意查看,用回车空格都可以翻页查看,/可以进行查找内容,查找到的内容会高亮,按v可进入vim编辑模式,退出vim模式还是返回less 可配合使用 : man ls | less 但是不能按v进入vim编辑模式 g/G  : 第一页/最后一页

4、head : 查看文件前n行,不加选项-n默认查看前10行 cat -n passwd | head -n 20 : 查看前20行 cat -n passwd | head -n -10 : 查看除了后10行的剩下n行

5、tail : 查看文件的后n行,不加选项-n默认查看后10行 cat -n passwd | tail -n 11 : 查看后11行 cat -n passwd | tail -n +11 : 查看除了文件前11行的后n行 tail -f /var/log/message  : 可以实时查看日志文件的内容 一般用的比较多的是head和tail连用取出中间行的内容

6、grep : 文本行搜索工具,可配合管道|使用 grep root passwd : 查找出含root字符串的行,匹配到的字符串会高亮输出到终端,是从单词中匹配含root的字符串 -w(word)  :  通过指定的单词匹配,也叫精确匹配 -i : 不区分大小写查找 -n(number) : 显示匹配到的行号 -o(only-matching) : 只显示匹配到的字符串,一般配合-n使用显示一行内出现了多少个字符串 -c(count) : 匹配成功就把匹配到的行数统计出来 -v : 去掉匹配到的行,打印匹配到关键字之外的行 -An(A:after,n是number) : 打印出匹配到的行的下n行 -Bn(before,n表示number) : 打印出匹配到的行的上n行 -Cn : 打印出匹配到的行的上n行和下n行 -q(quite --silent) : 静默输出,不管配没匹配到,都不输出到终端,一般用于脚本中做判断,配合$?的退出码使用 -r(recursive) : 递归搜索目录,根据文本内容查找目录,for example : grep -nr HISTSIZE /etc : 查找含HISTSIZE字符串的文件, 打印出具体路径和在文件里面的的第几行出现的 注意: 一般比较耗资源,这一条命令一般用的比较多 -l(--files-with-matches) : 一般会配合-r匹配文件,打印匹配到的文件的名字,for example : grep -rl HISTSIZE /etc,直接输出匹配到文件的完整路径 --color=auto : 匹配到的字符串会高亮

BRE(basic regular express)基本正则表达式 : 支持三剑客,用正则表达式时最好加上'',一般各个地方都可以使用,用于处理文本和字符串的 grep '正则表达式' file  注意: 空格不能忽略,不要把^string、string$和\<\>搞混,前者匹配的是行,后者匹配的是单词,想要查到到的内容存在多个,比如或者,就需要用\|区别开,对于egrep直接用|就可以了 ^string :  以string开头的行,有空格就不能过滤出来 string$ : 以string结尾的行 ^$ :  空行 \ : 以string结尾的行 \ : 匹配string,等同于grep -w匹配的是string单词 .  :  表示一个任意的字符 * : 表示前一个字符匹配0-多次 .* : 表示任意0-多个字符 [abc] : 表示匹配一个字符,a或者b或者c ^[abc] : 表示以a或b或c开头的行 [a-z] : 表示小写a-z出现1次 [A-Z] : 表示大写A-Z出现1次 [0-9] : 表示数字0-9出现1次 [a-zA-Z] : 代表所有字母 [^a-zA-Z0-9] : 取出除了大小写字母和数字 [^a] : 取反,取出除了a的其他字符 \  :  去除后面字符的特殊含义 !以下表达式支持扩展注意格式用法: for example :   [:alpha:]:匹配字母(不区分大小写) [:lower:]:匹配小写字母  a-z [:upper:]:匹配大写字母  A-Z [:digit:]:匹配数字 [:space:]:匹配空格 [:alnum:]:匹配任意字母或数字 [:punct:]:除空格和字母、数字以外的任何可打印字符

[[:space:]]{2}

ERE(Extend Regular Express)扩展正则表达式,支持正则表达式 egrep 或者 grep -E + :  表示+前面的字符出现1-多次 ?  : 表示?前面的字符出现0-1次 {m} : 表示前面的字符出现m次 {n,m} : 表示前面的字符出现n到m次 {,m} : 表示前面的字符出现0到m次 {m,} : 表示前面的字符出现m到若干次 exp1 | exp2 : 表示匹配exp1或exp2中的一项,若含有exp1和exp2的字符串则也会匹配出来 tail -f /var/log/messages | egrep -i 'err|warn|den' : 实时显示err或warn或den ()  : 把整个作为一个整体

7、wc(word count) : 统计行数,单词数,字节数 -l(line) : 只统计行数 -w(word) : 只统计单词数 -c(character) : 只统计字节数

8、awk : 用于空格较多的文件中,默认以空格为分隔符 awk  '{print $1}'  password  :  不区分空格的个数,$0是把为过滤出来的输出,$1是空格分隔符后面的第一个字符 -F(指定分隔符)    awk -F ':' '{print $2}' passwd  :以冒号为分隔符打印第二列

9、cut(把文件的每行和选项分离出来) -d : 自定义指定分隔符 -f : 指定显示区域的列 -c : 以字符为单位进行分割 cut -d ':'  -f 1 password  :  以':'为分隔符输出第一列 cut -c 2-5 password : 提取每行第2到第5的字符 cut -c 2,5 password : 只提起第2行和第5行的字符

10、sort(对文本文件的行进行排序,默认是升序排序),配合uniq(11)使用可以查重 注意: sort -t -k 会原样输出数据,而awk和cut会取出指定的分隔符前后的数据 -r :  执行反方向排序,降序 -n : 数字排序,一般和-k配合使用 -r : 降序,从大到小 -t : 指定分隔符 -k : 指定列 -u : 先排序,再合并重复行,和uniq效果一样,直接取消重复行排序,运行不显示 sort  -t:  -k3 -n  password   :  以冒号为分隔符指定第三列数字排序,输出的是整个数据,不像cut会分离出来

11、uniq 取出相邻的重复行,一般先进行排序再用uniq -c : 统计相邻重复行出现的次数

12、sed(stream editor,流编辑器),不加-i选项只在内存中运行和修改、替换,不会对源文件进行操作 sed  '/需要匹配到的文件/对文件进行怎样的操作'  \%regexp%: 任何能够被regexp匹配到的行,换用%(用其他字符也可以,如:#)为边界符号,是为了防止/regex/的斜杠被使用了,匹配起来有些麻烦 for example : (1)sed -r/-E -n '\@^r@Ip'  password = sed -r/-E -n '/^r/Ip'  password  = sed -r/-E -n '\%^r% Ip'  password    常用编辑命令  1)p:打印模式空间中的内容 ,选项加-n 2)d:删除匹配到的行  3)a \text:append,表示在匹配到的行之后追加内容  4)i \text:insert,表示在匹配到的行之前追加内容  5)c \text:change,表示把匹配到的行和给定的文本进行交换  6)s/regexp/replacement/flages:查找替换,把text替换为 regexp匹配到的内容(其中/可以用其他字符代替,例如@)       其他编辑命令:      g:全局替换,默认只替换第一个      i: 不区分大小写      p:如果成功替换则打印 -n(--quite,--silent) : 静默输出,一般和p配合使用,和grep -q作用大同小异,配合p也是输出已经进行操作后匹配到的行 -r(regexp-extended) : 支持扩展正则表达式 -E : 与-r一样 -i : 修改文件内容 sed -r/-E -n '/^r/Ip'  password :  /接的正则表达式/,I(大写的i,表示忽略大小写),p(print,打印出来),匹配password中以r开头并忽略大小写r的行  ###地址定界:  sed -n -r '3,+4 p'  passwd : 打印第3行和第3行下面的4行 sed '2 s(search)/root/huawei/'  password : 2表示第2行,把第2行的第一个root替换成huawei,替换成功会输出所有的数据,包括已经替换成功的 sed -n '2 s(search)/root/huawei/pI'  password : I(大写的i)忽略大小写,表示不区分大小写匹配,把root替换成huawei,打印出来,打印的是匹配到的行,Root也能匹配到 sed -n '2 s(search)/root/huawei/Igp'  password : g是global表示全局的,I(大写的i)忽略大小写,把第二行中所有匹配到的不区分大小写输出 sed -n '$ s/root/huawei/p' passwd  : 把最后一行的root替换成huawei,并打印出来结果 sed -n '/root/p' passwd | cat -n :  把含有字符root的行打印出来,并显示行号 sed '1,5d' passwd :  删除1到5行 sed -n 5p passwd : 打印第5行 sed -n '$p' passwd : 打印最后一行,包括空行 sed -n '2a(append) \huawei' passwd : 在第二行下面另起一行,加huawei内容 sed -n '2i(insert) \huawei' passwd : 在第二行上面另起一行,加huawei内容 sed -n '2c(change) \huawei' passwd : 把第二行替换成huawei sed -n '1,5p' passwd  :  打印第1到第5行 sed -i.bar  '1,5d' passwd  :  拷贝为.bar文件并删除1,5行改变源文件,注意.bar文件没有被改变 sed  's/root/huawei/g'  passwd  : 把每一行所有的root替换成huawei sed  's/root/huawei/'  passwd  : 替换每行的第一个匹配的root为huawei 用替换可以删除内容(不是删除行) sed 's/root//'  passwd  :  删除所有行的第一个root sed 's/root//g'  passwd : 删除所有行的root sed -n '1 s/root//2p' passwd : 删除第1行的第2个root sed 's/^/#/'  passwd  : 每行开始加注释,^表示以空开头 sed 's/^.//'   passwd  : 删除每行的第一个字母

grep  awk  sed 三剑客 grep擅长查找功能,sed擅长取行和替换。awk擅长取列。

参考文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。