grep命令、sed 命令 、awk命令、uniq命令
grep命令查找 所在行内容
格式:grep [参数] [搜索模型] [文件名]
1、grep "hello" *
在的有文件中查找 hello 文件。
选项参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 所在 行的次数 ,而不是字符串出现的次数。
-i :忽略大小写的不同
-n :顺便输出行号
-v :反向选择,显示出没有 '搜寻字符串' 的那行内容!
--color=auto :可以将找到的关键词部分加上颜色的显示喔
处理参数:
-A 除了显示匹配的一行之外,并且显示该行之后的num行
-B 除了显示匹配的一行之外,并且显示该行之前的num行
-C 除了显示匹配的一行之外,并且显示该行前后的num行
2、grep -c "file" a
在a文件中匹配到 file 所在行的次数。
3、grep -n "file" a
在a文件中有多少行匹配到file,同时显示行和行号。
4、grep -i "file" a
在a文件中查找file,并不区分大小写。
5、grep -v "file" a
在a文件中过滤掉file所在的行。
grep -E 选项可以用来扩展选项为正则表达式。
6、grep -E "2016:22:5[0-9]" a
在a文件中查找时间在2016:22:50->2016:22:59的所在行。
7、grep -E "4{2}" a
查找包含两个4的行。
8、grep -E "4{2,}" a
查找大于两个4的行。
sed 命令 (替换或打印)
选项参数:
-n 取消sed的默认输出,不修改文件内容。
-i 改变文件内容。
结果处理参数:
p print打印。
d delete删除。
a 新增,指定行后方加入新行
s 替换指定字符串,格式 :sed -i 's/查找字符串(可以用正则表达式)/替换字符串/g' test.txt ;g代表global ,也可以指定行数;“/”是分隔符,可以用 # @ 等替换。
sed命令中,"$" 表示文件的最后一行
1、sed -n '1,4'p file
只打印从第一行到第四行得记录。
2、sed -n '/los/‘p file
打印匹配los的行
3、sed -n '4,/los/'p file
打印从第四行到匹配第一个los的之间的所有行。
4、sed -n '1,2'd file
把第一行和第二行全部删除(不改变原文件内容)。
awk命令数据处理并分析(取列)
awk命令原理:简单来说awk就是把文件逐行的读入,按输入分隔符进行切片,切成多个组成部分,把每片保存在内建的变量中,$1,$2,$3......($1第一列,$2第二列...$NF最后一列);其中,$0表示整行。
模型:
awk [参数] 'awk语句' 文件
例如一:
awk -F "分隔符" ‘{print $1}’ 文件
awk '{if(NR<31 && NR>19) printf $1"\n"}' test.txt
注:NR代表行号,&&(and)并且,\n回车换行
参数说明:
-F 指定分隔符
例如二:
cat file|awk '$0 !~/192.168.10.2/'|grep "php"|wc -l
~匹配192.168.10.2的ip地址的統計,!~為不匹配
awk '{print $1}' /var/log/httpd/access_log|sort|uniq -c
把apache网站的所有访问ip全部统计出来,并打印出统计次数。
uniq命令(重复)
1、uniq -c file
打印紧挨的重复行出现的次数。
2、uniq -d file
只打印重复的行。