文章目录
1. grep
1. grep介绍
主要用于过滤文本,还支持 管道符(|)
注:不是所有命令都支持放倒管道符后面的。用xargs让不支持的也也支持管道 例:find … | xargs -I {} -rm -rf {}
2. 基本用法
1. grep使用
grep 选项 ‘命令’ 文件路径
注:“命令” 跟 ‘命令’ 一样
2. grep选项
# -n 显示行号
grep -n 'root' /etc/passwd
# -o 只显示过滤成功的内容
grep -n 'root' /etc/passwd # 只输出一堆 root
# -i 忽略大小写
# -A n 匹配成功的当前行 及其后n行
# -B n 为前两行
# -C n 前后两行
grep -A 2 'root' /etc/passwd
# -c 显示出有几行匹配成功
# -v 取反
ps aux | grep ssh |grep -v grep
# -w 只过滤单词 (连续的字母数字下划线组成的)
grep -w "xiao" a.txt
# -r 递归的过滤
# -l 显示匹配成功的文件
grep -rl "root" /etc/ # 将etc文件下的全部子文件子子文件有root过滤出来
# grep -E 等同于 egrep 扩展正则表达式
# --color=auto 颜色 默认就有
# 可以输入 alias grep 查看
3. 普通的正则表达式
# ^ 以root开头
grep "^root" /etc/passwd
# $ 以root结尾
grep "root$" /etc/passwd
# . 任意一个字符
grep "roo." /etc/passwd
# * 左边的字符出现0 次 或者无穷次 默认贪婪 a.*b 吃到远的b
# 如果想非贪婪 需要 grep -P '.*?' -P表示支持perl的正则
grep "ab*" a.txt # 必须有a b没有也行 无数个也行
# [ ] 匹配单个字符 [0-9a-z] 范围 想匹配 - 则需要放到最左或最右
# [^0-9 ] 取反
grep 'a[1x]b' a.txt # 只对应出 a1b 跟axb
# 用 < > 或 -w 界定单词边界
grep \<22\> grep -w "22"
# -Pz P表示启用perl正则表达式 z表示多行处理 <