通配符
- * 匹配任意多个字符
- ? 匹配任意一个字符
- [] 匹配中括号中一个字符
正则表达式与通配符
- 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep,awk,sed命令都可以支持正则匹配
- 通配符用来匹配符合条件的文件名,通配符是完全匹配。
元字符
- “a*” 匹配所有内容,包括空白行
- “aa*” 匹配至少包含有一个a的行
- “aaa*” 匹配最少包含两个连续a的字符串
- “aaaaa*” 匹配最少包含四个连续a的字符串
- “s..d” 会匹配在s和d之间有两个字母的单词
- “s.*d” 会匹配在s和d之间有任意字符
- “.*” 匹配所有内容
- “^M” 匹配以大写字母M开头的行
- “n$” 匹配以小写字母n结尾的行
- “^$” 会匹配空白行
- “s[ao]id” 匹配s和i字母中,要不是a,要不是o
- “[0-9]” 匹配任意一个数字
- “^[a-z]” 匹配用小写字母开头的行
- “^[^a-z]” 匹配不用小写字母开头的行
- “^[^a-zA-Z]” 匹配不用字母开头的行
- “.$” 匹配使用”.”结尾的行
- “a{3}” 匹配a字母连续出现三次的字符串
- “[0-9]{3}” 匹配连续的三个数字的字符串
- “^[0-9]{3,}[a-z]” 匹配最少用连续三个数字开头的行
- “sa{1,3}i” 匹配在字母s和字母i之间最少一个a,最多三个a
字符截取命令
cut 命令
- cut [选项] 文件名
– f 列号:提取第几列
– d 分隔符:按照指定分隔符分隔列 - 默认为制表符
- printf ‘输出类型输出格式’ 输出内容
- 输出类型
– %ns 输出字符串。n是数字指代输出几个字符
– %ni 输出整数
– %m.nf 输出浮点数。m和n是数字,指代输出的整数位数和小数位数。如%8.2f代表共输出8位数,其中2位是小数,6位是整数。 - 输出格式
- \n 换行
awk命令
- awk ‘条件1{动作1}条件2{动作2}…’ 文件名
- 条件
– 一般使用关系表达式作为条件
– x > 10 判断变量x是否大于10
– x >= 10 大于等于
– x <= 10 小于等于 - 动作
– 格式化输出
– 流程控制语句
- awk ‘{printf $1”\n”}’ /etc/hosts
- df -h | awk ‘{printf $5”\n”}’ | cut -f 1 -d “%”
- awk ‘BEGIN{printf “hosts ip”}{printf $1 “\n”}’ /etc/hosts
- cat /etc/passwd | grep “/bin/bash” | awk ‘BEGIN{FS=”:”}{print $1 “\t” $3}’
- cat /etc/passwd | grep “/bin/bash” | awk ‘BEGIN{FS=”:”}{print $1 “\t” $3}’
sed命令
- sed [选项] ‘[动作]’ 文件名
- 选项:
–n:一般sed命令会把所有数据都输出到屏幕,如果加入此选择则只会把经过sed命令处理的行输出到屏幕
– e:允许对输入数据应用多条sed命令进行编辑
– i:用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出 - 动作
– a:追加,在当前行后添加一行或多行
– c:行替换,用c后面的字符串替换原数据行
– i:插入,在当前行前插入一行或多行
– d:删除,删除指定行
– p:打印,输出指定的行
– s:字符替换,用一个字符串替换另一个字符串。格式为“行范围s/旧字符串/新字符串/g”
- sed -n ‘2p’ zz.txt
- sed ‘1,4d’ zz.txt
- sed ‘2a 2016-05-06’ zz.txt
- sed ‘2i 2016-05-06’ zz.txt
- sed ‘2c 2016-05-06’ zz.txt
- sed ‘2s/04/06/g’ zz.txt
- sed -e ‘s/04/06/g;s/a/b/g’ zz.txt
字符处理命令
- sort [选项] 文件名
- 选项
– f:忽略大小写
– n:以数值型进行排序,默认使用字符串型排序
– r:反向排序
– t:指定分隔符,默认分隔符是制表符
– k n[,m]:按照指定的字符范围排序。从第n字段开始 ,m字段结束(默认到行尾)
- sort /etc/passwd
- sort -r /etc/passwd
- sort -n -t “:” -k 3,3 /etc/passwd
- wc [选项] 文件名
- 选项:
– l:只统计行数
– w:只统计单词数
– m:只统计字符数
- wc -l /etc/passwd