shell

JerryXia 发表于 , 阅读 (23)

通配符: * ? [] -> 完全匹配
正则: grep / awk / sed -> 包含匹配, 在文件中搜索符合条件的字符串

\ 转义符* 前一个字符 >=0 次, 要小心 a* 和 .* 是一样的. 一个字符^/$ 行首/行尾[] 范围内任意一个[^] 取反\{n,m\} 前一个字符 n~m 次, 注意是否需要添加左右边界# 例子[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\} # 日期: Y-m-d[0-9]\{1,3\}\.[0-9]\{1.3\}.[0-9]\{1,3\}\.[0-9]\{1.3\} # ip# grep: 行提取grep -n -v rexp file # num: 行号 v: 取反# cut: 列提取, 对 列 的格式要求高cut -f 2 -d ':' file # f: 列 d: 分隔符; 要注意 分隔符# printf 格式化输出%ns%ni%m.nf# awk -> 列awk 'pattern{action}' filepattern: BEGIN / END / 条件语句awk '{print $2 "\t" $4}' file # 相当于 cut -f 2,4; print 会自动在末尾加上 \nawk 'BEGIN{FS=":"}' # 使用不同的分隔符, 必须写在最前面, 默认使用 空格/\t 分隔awk -F'\'' /error/ file # 指定 ' 为分割符, 匹配文件中的 error 部分# sed -> 行sed [option] 'action' fileoption: -n 只显示需要处理的数据 -e 同时应用多个 action -i 保存修改到文件action: a 追加 c 行替换 i 插入 p 打印 s 字符串替换 d 删除sed -e 'action;action' # 同时应用多个 action# sortsort -f -n -r -t -k n,m # f 忽略大小写 n 以数值排序, 默认为字符串 r 反向排序 t 分隔符, 默认为 \t k 指定范围# wcwc -l -w -m # l line w word m char

流程控制

http://www.imooc.com/learn/408

文件类型判断

条件判断式

# 文件判断test -e file # 文件类型[ -e file] # 注意要有空格-w file # 判断是否有 w 权限, 注意不区分用户file1 -nt -ot -ef file2 # new old equeal: 使用 iNode 判断# 数组判断n1 -eq -ne -gt -lt -ge -le n2# 字符串判断-z -n == !=# 多重条件判断-a -o ! # and/or/not

流程控制

env|grep USER|cut -d '=' -f 2 # 获取登录用户df -h|grep vda1|awk '{print $5}'|cut -d '%' -f 1 # 获取系统盘使用率[ -n $(ps aux|grep nginx|grep -v grep)] # 判断进程是否运行[ -z $(echo $num|sed 's/[0-9]//g')] # 判断是否为全数字# if[condition] && echo yes || echo no # 类似3元操作符的栗子if [condition]; then # then 可以换行    todoelif [condition]; then    todoelse    todofi# casecase $var incon1)    todo