初次编辑2017年9月24日 16:25:02
摘要
一. 固化命令
二. grep及正则表达式
三. Sed及正则表达式
四.awk及正则表达式
五. 其他命令
作业
今日总结
摘要
引用:海峰老师
- 固化命令的方式
- grep、sed下的正则表达式
一. 固化命令
- shell登陆
- /etc/profile
- /etc/bashrc
- /root/.bashrc
- /root/.bash_profile
- /etc/profile.d/a.sh
- 非shell登陆
- /root/.bashrc
- /etc/bashrc
- /etc/profile.d/a.sh
二. grep及正则表达式
- grep
- -n :显示行号
- -o :只显示匹配的内容
- -q :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容
- -l :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl ‘root‘ /etc
- -A :如果匹配成功,则将匹配行及其后n行一起打印出来
- -B :如果匹配成功,则将匹配行及其前n行一起打印出来
- -C :如果匹配成功,则将匹配行及其前后n行一起打印出来
- -c :如果匹配成功,则将匹配到的行数打印出来
- -E :等于egrep,扩展
- -i :忽略大小写
- -v :取反,不匹配
- -w:匹配单词
- 正则介绍
- ^ :行首
- $ :行尾
- . :除了换行符以外的任意单个字符
- .*:所有字符
- * :前导字符的零个或多个
- + :前导字符一个或多个
- ? :前导字符零个或一个
- x{m} :x出现m次
- x{m,} :x出现m次至多次(至少m次)
- x{m,n} :出现m次至n次
- []:字符组内的任一字符
- [^]:对字符组内的每个字符取反(不匹配字符组内的每个字符)
- ^[^]:非字符组内的字符开头的行
- \-:只能放在结尾
- [a-z]:小写字母
- [A-Z]:大写字母
- [a-Z]:小写和大写字母
- 正则表达式与通配符
- 通配符:与命令搭配使用
- 正则表达式:一般用于文本处理
三. Sed及正则表达式
- sed语法
- sed [options] ‘command‘ in_file[s]
- options 部分
- sed -n ‘动作‘ :静默
- sed -e ‘动作‘ :多个规则
- sed -i ‘动作‘:直接修改读取内容并写入
- sed -f ‘动作‘ :将动作写在一个文件内;
- command 部分
- ‘[地址1,地址2] [函数] [参数(标记)]‘
- 定址的方法 1.数字 2.正则
- 函数
- 增删改
- a 后插
- c 替换
- i 前插
- d 删除
- 输入输出
- p 打印匹配的行 一般和 -n 参数连用,以屏蔽默认输出
- r 从文件中读入
- w 写入到文件中
- s 字符串替换 s/old/new/[g] (g表示一行全部修改)
- ():保存被匹配的字符 以备反向引用\N时使用 最多9个标签 标签顺序从左至右
- options 部分
- sed [options] ‘command‘ in_file[s]
四.awk及正则表达式
- awk语法:awk [options] ‘commands‘ files
- -F 定义字段分隔符,默认的分隔符是连续的空格或制表符,使用option中的-F参数定义间隔符号
- 用2,$3等的顺序表示files中每行以间隔符号分隔的各列不同域
- NF变量表示当前记录的字段数
- NR 表示AWK读入的行数
- 行处理:定址 命令
- 定址方法: 正则,变量,比较和关系运算
- ~ !~:匹配正则或不匹配,正则需要用 /正则/ 包围住
- -v 定义变量并赋值 也可以借用次方式从shell变量中引入
- username=root
- awk -v var=$username -F: ‘$1 == var{print $1,NR,NF}‘ /etc/passwd
五. 其他命令
- cat 文件 | sort | uniq:文件排序去重
- cut -d分隔符 -fm,n:处理文件以分隔符切割取第m n部分
- du -sh:统计文件大小
- find 路径 -type f:按照类型查找普通文件
- find 路径 -name 文件名 :按照名字查找文件
- find 路径 -size +30M:找出大于30M文件
- find 路径 -size +10M -size -30M:找出大于10M小于30M的文件
- find / -size +2M -type f -name *.txt
作业
- 正则表达式及字符处理
目标文件/etc/passwd,使用grep命令或egrep
- 显示出所有含有root的行:
- 输出任何包含bash的所有行,还要输出紧接着这行的上下各两行的内容:
- 显示出有多少行含有nologin。
- 显示出那些行含有root,并将行号一块输出。
- 显示出文件中
- 新建用户
abominable
abominate
anomie
atomize
编写正则表达式,将他们匹配出来
egrep ‘a.omi(nabl|nat|z|)e‘ /etc/passwd
- 建四个用户
Alex213sb
Wpq2222b
yH438PIG
egon666
egon
过滤出用户名组成是字母+数字+字母的行
[[email protected] ~]# egrep ‘^[a-Z]+[0-9]+[a-Z]+‘ /etc/passwd
- 显示出/etc目录下所有包含root的文件名
- 过滤掉/etc/ssh/sshd_config内所有注释和所有空行
grep -v ‘^#‘ /etc/ssh/sshd_config |grep -v ‘^ *$‘
今日总结
时间: 2024-11-08 20:59:41