grep基本用法
格式:grep [选项] [模式] [文件]
选项:
-c:只显示有多少行匹配 ,而不具体显示匹配的行
-n:在每一行前面打印该行在文件中的行数
-i:在字符串比较的时候忽略大小写
-v:显示不包含匹配文本的所欲行
实例1
ls -l | grep -n "^d" #找到以d开头的内容
ls -l|grep -n "feigu" #找到以feigu开头的内容
awk基本用法
格式
awk [-F field-separator] 'commands' inputfile
awk -F: 'commands' inputfile
awk -f awk-scpript-file inputfile
实例1
ls -l|awk '{print $1,$2}' #打印出该文件第一列和第二列的内容。注意只能是单引号。awk默认使用空格分隔符,所以省略了-F。$1,$2...$n,这种方法称为域标记。
cat /etc/passwd|awk -F: '$1=="feigu" {print $0}' #第一列的值为feigu。$0表示使用所有域 cat /etc/passwd|awk -F: '$1=="games" {print $0}' #第一列的值为games 。$0表示使用所有域 。-F表示指定分隔符
cat baidu.log|wc -l #统计baidu.log 文件的行数
sed基本用法
sed [选项] [定址commonds] [inputfile]
sed [选项] -f scriptfile inputfile
./scriptfile inputfile(命令脚本首行:#!/bin/sed -f)
选项:
-n 关闭默认输出,默认将自动打印所有行
-e 多点编辑,允许多个脚本指令被执行
-r 支持扩展正则+ ? () {} |
-f 支持使用脚本
-i 直接修改原文件,慎用
定址:
定址可以是0个,1个,2个。通知sed去处理文件的哪几行。
0个,处理文件所有行
1个,处理行号所在位置的行
2个,处理被行号或正则包起来的行
命令:
p 打印行
d 删除行
s 替换
a 之后添加一行append
i 当前行之前插入文本-instert
实例1
sed -n '1p' baidu.log #打印出文件第一行
sed -n '1,3p' baidu.log #打印出文件1-3行 ,注意是逗号分隔
sed "s/python/java/g" baidu.log #将文件中python字符串替换成java字符串
注释:s表示替换命令,/my/表示匹配my,/java/表示把匹配的替换成java,/g表示 替换所有的匹配
sed "s/^/#/g" baidu.log #在每一行最前面加#号
sed "s/$/----/g" baidu.log #在每一行最后加----
相关正则
1 ^ 表示一行的开头。如:/^#/ 以#开头的匹配 2 $ 表示一行的结尾。如:/}$/ 以}结尾的匹配。 3 < 表示词首。 如 <abc 表示以 abc 为首的詞。 4 > 表示词尾。 如 abc> 表示以 abc 結尾的詞。 5 . 表示任何单个字符。 6 * 表示某个字符出现了0次或多次。 7 [ ] 字符集合。 如:[abc]表示匹配a或b或c,还有[a-zA-Z]表示匹配所有的26个字符。如果其中有^表示反,如[^a]表示非a的字符