一,grep
标准格式: grep 选项 匹配式/表达式 文件名/标准输入
| grep | 选项 |
|---|---|
| -i | 查找时忽略大小写 |
| -n | 显示行号 |
| -v | 反向匹配(选择除了选中单词的行) |
| -o | 只显示匹配的单词 |
| -r | 递归匹配 可以跟文件夹 |
| -R | 递归匹配,处理软连接 |
| -w | 只匹配单词 |
| -f | 以文件作为匹配条件,过滤出相同部分 |
示例:
grep 1 a.txt 过滤出1,高亮
grep -v 1 a.txt 反选,除了1的行,其余都过滤出
grep -i a a.txt不区分大小写,过滤出A和a,高亮
二,awk
- FS:列分割符。指定每行文本的字段分隔符,默认为空格或制表位。与"-F"作用相同
- NF:当前处理的行的字段个数。
- NR:当前处理的行的行号(序数)。
- $0:当前处理的行的整行内容。
- $n:当前处理行的第n个字段(第n列)。
- FILENAME:被处理的文件名。
- RS:行分隔符。awk从文件上读取资料时,将根据RS的定义把读取的资料切割成许多条记录,而awk一次仅读入一条记录,以进行处理。预设值是’\n’
输出所有内容
awk '{print}' name.txt
awk '{print $0}' name.txt
输出第1到3行
awk 'NR==1,NR==3 {print}' name.txt
awk '(NR>=1)&&(NR<=3) {print}' name.txt
输出第1和第3行
awk 'NR==1;NR==3 {print}' name.txt
awk 'NR==1||NR==3{print}' name.txt
awk '(NR%2)==1{print}' name.txt 输出所有奇数行的内容
awk '(NR%2)==0{print}' name.txt 输出所有偶数行的内容
从/etc/passwd文件中找到以root开头的行
awk '/^root/{print}' /etc/passwd
三,sed
编辑文本
- -e 以选项中的指定的script来处理输入的文本文件;
- -f 以选项中指定的script文件来处理输入的文本文件
- -V 或--version:显示版本信息
- a\ 在当前行下面插入文本
- i\ 在当前行上面插入文本
- c\ 把选定的行改为新的文本
- d 删除,删除选择的行
- D 删除模板块的第一行
- s 替换指定字符
- g 替代当前模板块中的文本
- G 追加到当前模板块文本的后面
- l 列表不能打印字符的清单
- p 打印模板块的行
- P(大写) 打印模板块的第一行
- = 打印当前行号码
替换 g 表示行内全面替换 p 表示打印行 w 表示把行写入一个文件
字符
- ^ 匹配行开始,如:/^root/匹配所有以root开头的行
- /匹配所有以root结尾的行
- . 匹配一个非换行符的任意字符,如:/a.c/匹配a后任意一个字符
-
- 匹配0个或多个字符,如:/*root/匹配root前任意个数字符
- [.] 匹配一个指定范围内的字符,如/[Aa]bc /匹配Abc和abc
- [^] 匹配一个不在指定范围内的字符,如:/[^B-Z]bc/匹配不包含B-Z的字母,显示结果为Abc
删除第二行
sed 2d a.txt
修改aa为bb
sed -i 's/aa/bb/g' a.txt
在第23行添加
sed -i '2,3i aa\bb' a.txt 添加完第三行变为第四行,在原本的2,3行添加