shell 文本过滤命令[1]

时间 : 14-06-14 栏目 : Shell进阶 作者 : 老薛 评论 : 1 点击 : 1,933 次

常用命令如下:
(1)head
作用:提取文本文件的前几行
格式:head -数字 文本文件
实例:
--查看/etc/passwd/文件的前3行
#head -3 /etc/passwd

(2)tail
作用:提取文本文件的末尾几行
格式:tail +数字/-数字/-f 文本文件
实例:
--查看/etc/passwd文件中的最后5行
#tail -5 /etc/passwd
--查看/etc/passwd文件的第10行到最后一行的内容
#tail +10 /etc/passwd
--监视/vas/log/messages文件是否追加了内容
#tail -f /var/log/messages

(3)grep
作用:在文本文件中提取匹配的行
格式:grep [参数] "字符串/正则表达式" 文本文件
参数:
-c 只显示匹配的行的个数,不显示行的内容
-q 只显示查找状态,不显示行的内容
-v 查找不匹配的行
-n 在显示行前标上在文档中的行号
-w 完全匹配
-i 模式匹配时忽略大小写
正则表达式元字符:
^
锚定行的开始 如:'^grep'匹配所有以grep开头的行
$
锚定行的结束 如:'grep$'匹配所有以grep结尾的行
.
匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p
*
匹配零个或多个先前字符 如:' *grep'匹配所有一个或多个空格后紧跟grep的行。
.*一起用代表任意字符
[...]
匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep
[^...]
匹配一个不在指定范围内的字符
\(..\)
标记匹配字符,如'\(love\)',love被标记为1
\<
锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行
\>
锚定单词的结束,如:'grep\>'匹配包含以grep结尾的单词的行
x\{m\}
重复字符x,m次,如:'0\{5\}'匹配包含5个0的行
x\{m,\}
重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行
x\{m,n\}
重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5-10个o的行
实例:
--在/etc/passwd文件中查找包含字符串root的行并显示
#grep "root" /etc/passwd
--在/etc/passwd文件中查找以a/b/d开头的行并显示行内容
#grep "^[abd]" /etc/passwd
--统计/etc下以d开头的行数
#ls -l /etc | grep -c "^d"

(4)sort
作用:对文本文件进行排序并输出
格式:sort [参数] 文件路径
-f 忽略大小写
-t 指定字段分隔符
-r 降序排列
-n 按数字大小排列
-u 消除重复行
实例:
--输出/etc/passwd文件内容并排序
#sort /etc/passwd
--对/etc/passwd文件按第三字段排序,以:号字段分隔符,并以数字升序排列
--sort -t: -n +2 -3 /etc/passwd
(5)uniq
作用:去除文本文件中重复内容并输出
格式:uniq [参数] 文本路径
-u 输出未重复的内容
-d 输出重复的内容
实例:
--显示/abc/a1文件内容,去除重复,重复的行只显示一行
#uniq /abc/a1
--显示/abc/a1的未重复内容,重复的行全都不显示
#uniq -u /abc/a1
--只显示/abc/a1的重复内容,重复的行只显示一行
#uniq -d /abc/a1
注:经常结合sort与uniq
如:#sort /abc/a1 | uniq

除非注明,文章均为( 老薛 )原创,转载请保留链接: http://www.bdkyr.com/shell/57.html

shell 文本过滤命令[1]:目前有1 条留言

  1. 沙发
    阿杜
    Post: 2016-01-29 下午5:47

    运维人的最爱 :oops:

随便看看

1