grep 命令
| 选项 | 意义 |
| -c | 匹配行的数量 |
| -i | 忽略大小写 |
| -h | 查询多文件时不显示文件名 |
| -l | 只列出匹配的文件名,不列匹配行 |
| -n | 列出匹配行,并列出行号 |
| -s | 不显示不存在或无匹配的错误信息 |
| -v | 显示不包含匹配文本的所有行 |
| -w | 匹配整词 |
| -r | 递归搜索,搜子目录 |
| -E | 支持扩展的正则表达式 |
| -F | 不支持正则表达式 |
grep -nE "^\w+@\w+\.\w+$" a.txt
| 选项 | 意义 |
|---|---|
| -n | 不打印所有行到标准输出 |
| -e | 将下一个字符串解析为sed编辑命令,如果只传递一个 -e可以省略 |
| -f | 正在调用sed脚本文件 |
| 选项 | 意义 |
|---|---|
| x | x为指定行号 |
| x,y | 指定从x到y的行号范围 |
| /pattern/ | 查询包含模式的行 |
| /pattern/pattern/ | 查询包含两个模式的行 |
| /pattern/,x | 从与pattern的匹配行之间的行 |
| x,/pattern/ | 从x号行到与pattern的匹配行之间的行 |
| x,y! | 不包含x和y行号的行 |
| 选项 | 意义 |
|---|---|
| p | 打印匹配行 |
| = | 打印文件行号 |
| a\ | 在定位行号之后追加文本信息 |
| i\ | 在定位行号之前追加文本信息 |
| d | 删除定位行 |
| c\ | 用新文本替换定位文本 |
| s | 使用替换模式替换应用模式 |
| r | 从另一个文件中读文本 |
| w | 将文本写入到一个文件 |
| y | 变换字符 |
| q | 第一个模式匹配完成后退出 |
| l | 显示与八进制ASCII代码等价的控制字符 |
| {} | 在定位行执行的命令组 |
| n | 读取下一个输入行,用下一个命令处理新的行 |
| h | 将模式缓冲区文本拷贝到保持缓冲区 |
| H | 将模式缓冲区文本追加到保持缓冲区 |
| x | 互换模式缓冲区和保持缓冲区内容 |
| g | 将保持缓冲区内容拷贝到模式缓冲区 |
| G | 将保持缓冲区内容追加到模式缓冲区 |
sed -n ‘/hello/=‘ a.txt 打印行号
sed -n ‘/hello/p‘ a.txt 打印内容
sed -n ‘$p‘ a.txt 打印最后一行
sed -n ‘/zbq/,$p‘ a.txt 从匹配的zbq行到最后一行
[plain]
#!/bin/sed -f
/zbq:/i\
we insert a new line.
在匹配行上面插入 we insert a new line
[plain]
sed -n ‘s/hello/world/w b.txt‘ a.txt
把 匹配hello行替换world行 并输出到 b.txt中
[plain]
sed ‘/hello/r b.txt‘ a.txt
把匹配的hello用文本b.txt替换
[plain]
ifconfig | grep ‘inet addr‘ | sed ‘s/^.*inet addr://g‘ | sed ‘s/Mask.*$//g‘ | sed ‘s/Bcast.*//g‘
只显示ip
awk命令
| 变量 | 描述 |
|---|---|
| $n | 当前记录的第n个字段,字段间由FS分隔。 |
| $0 | 完整的输入记录。 |
| ARGC | 命令行参数的数目。 |
| ARGIND | 命令行中当前文件的位置(从0开始算)。 |
| ARGV | 包含命令行参数的数组。 |
| CONVFMT | 数字转换格式(默认值为%.6g) |
| ENVIRON | 环境变量关联数组。 |
| ERRNO | 最后一个系统错误的描述。 |
| FIELDWIDTHS | 字段宽度列表(用空格键分隔)。 |
| FILENAME | 当前文件名。 |
| FNR | 同NR,但相对于当前文件。 |
| FS | 字段分隔符(默认是任何空格)。 |
| IGNORECASE | 如果为真,则进行忽略大小写的匹配。 |
| NF | 当前记录中的字段数。 |
| NR | 当前记录数。 |
| OFMT | 数字的输出格式(默认值是%.6g)。 |
| OFS | 输出字段分隔符(默认值是一个空格)。 |
| ORS | 输出记录分隔符(默认值是一个换行符)。 |
| RLENGTH | 由match函数所匹配的字符串的长度。 |
| RS | 记录分隔符(默认是一个换行符)。 |
| RSTART | 由match函数所匹配的字符串的第一个位置。 |
| SUBSEP | 数组下标分隔符(默认值是\034)。 |
awk [-F 域分割符] ‘awk程序段‘ 输入文件
awk -f awk脚本文件 输入文件
./awk脚本文件 输入文件
[plain]
awk ‘{print $1,$2}‘ c.txt
打印第一和第二域 $0是全域
[plain]
awk -F"\t" ‘{print $1}‘ c.txt
打印以tab键分割的域
[plain]
awk ‘BEGIN {FS=","} {print $1}\‘ c.txt
打印以,域
[plain]
awk ‘BEGIN {FS=":"} $1~/bin/‘ /etc/passwd
打印以【:】为域 第一域匹配bin字符
[plain]
awk ‘BEGIN {FS=":"} {if ($3~10||$4~7) print $0}‘ /etc/passwd
打印以【:】为域 第三域匹配字符串10 第四域匹配字符串7
[plain]
awk ‘/^$/{print x+=1}‘ c.txt
打印空白行 行数
[plain]
#!/usr/bin/awk -f
BEGIN {FS=","}
{
total=$2+$3+$4
avg=total/3
print $1,avg
}
把第2,3,4域相加取平均值
[plain]
awk ‘BEGIN {FS=","} {print NF,NR,$0} END {print FILENAME}‘ c.txt
以,为分割符 打印,行号,全部 最后打印文件名
fps = 1
fps = 2
fps = 3
fps = 4
fps = 5
[plain]
awk -F"=" ‘{s+=$2} END {printf"avg=%.2f\n", s/NR}‘
统计 fps的平均数
原文:http://qibingtuan.blog.51cto.com/1103504/1979097