shell 编程之正则表达式
正则表达式:又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。
正则表达式之通配符
*任意字符,?任意一个字符,[]匹配字符
正则式包含匹配,是文件中的内容匹配,通配符是文件匹配,是完全匹配
基础正则表达式:
* 前一个字符匹配0次或任意多次
. 匹配除了换行符外任意一个字符 ^ 匹配行首 例如 ^hello 会匹配以hello开头的行 $ 匹配行尾 例如 hello$ 会匹配以hello结尾的行 [] 匹配中括号中指定的任意一个字符,只匹配一个字符。[0-9]匹配任意一位数字 [^] 匹配除中括号的字符以外的任意一个字符。 例如 [^0-9]匹配任意一位非数字字符 [^a-z]表示任意一位非小写字母 \ 转义符 用于取消将特殊符号的含义取消 \{n\} 表示其前面的字符恰好出现N次 例如 [0-9]\{4\} 匹配4位数字 [1][3-8][0-9]\{9\} 匹配手机号码 \{n,\} 表示其前面的字符出现不小于n次。 例如 [0-9]\{2,\} 表示两位及以上的数字 \{n,m\} 表示其前面的字符至少出现n次,最多出现m次。 例如 [a-z]\{6,8\} 匹配6到8位的小写字母
* 前一个字符匹配0次或任意多次
. 匹配除了换行符外任意一个字符
^ 匹配行首 例如 ^hello 会匹配以hello开头的行 $ 匹配行尾 例如 hello$ 会匹配以hello结尾的行
[] 匹配中括号中指定的任意一个字符,只匹配一个字符。[0-9]匹配任意一位数字 [^] 匹配除中括号的字符以外的任意一个字符。 例如 [^0-9]匹配任意一位非数字字符 [^a-z]表示任意一位非小写字母
grep ^$ //空行
\ 转义符 用于取消将特殊符号的含义取消
\{n\} 表示其前面的字符恰好出现N次 例如 [0-9]\{4\} 匹配4位数字 [1][3-8][0-9]\{9\} 匹配手机号码
\{n,\} 表示其前面的字符出现不小于n次。 例如 [0-9]\{2,\} 表示两位及以上的数字 \{n,m\} 表示其前面的字符至少出现n次,最多出现m次。 例如 [a-z]\{6,8\} 匹配6到8位的小写字母
日期匹配格式:
grep “[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-” 文件名
字符串截取命令:
cut 列提取命令
cut:列提取命令,默认是按tab为分割符
-d 指定分隔符 -f指定列号
awk 截取一列
sed 替换字符
sed [选项] [动作] 文件名 选项: -n 只输出经过sed处理过的行到屏幕 -e 允许一次应用多个动作 -i 直接修改文件,并且不由屏幕输出 动作: a : 追加,在当前行后添加一行或多行 c : 整行替换 i : 插入,在当前行前插入一行或多行 p : 打印 s : 字串替换(替换格式与vim中的类似) '行范围s/旧字串/新字串/g'
wc
-l 统计行数 -w 统计单词数 单词数 统计为以空格分开 -m 统计字符数 并且会统计回车符
sort
-f 忽略大小写 -n 以数值型进行排序 -r 反向排序 -t 指定分隔符,默认是制表符 -k n[,m] 按照指定的字段范围排序.从第n字段开始,m字段结束(默认到行尾