1 正则表达式和通配符:
-
正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。 grep、awk、sed等命令可以支持正则表达式。
-
通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了。
2 通配符介绍:
- * 用来匹配任意内容
- ?用来匹配任意一个字符(有且只有一个字符)
- [] 匹配括号内的一个字符
3.正则表达式
元字符:
* 元字符详解:
假设文件a.txt 有为一下内容:
a
aa
aaa
aaaa
aaaaa
b
bb
bbb
bbbb
bbbbb
当我们使用命令 grep . a* 是,此时会将所有的字符都输出,因为* 匹配前面表达式0个或多个,所以都可以匹配
3 字符串撷取命令
cut : 对列进行撷取,grep 对行进行撷取
cut是列提取命令,默认用的分隔符是Tab键,要指定分隔符用-d选项 当截取比较规律的文档,如有“:”或有Tab制表符时,用cut截取比较方便 #cut [选项] 文件名 选项(选项没有先后顺序):
-f 列号:提取第几列(如果要提取几列,则用“,”将列号隔开)
-d 分隔符:按照指定分隔符分隔列
注意:如果制定分隔符为一个空格,cut命令只会以一个空格为分隔符,而不会以多个空格为分割符。
printf 命令:
可以执行输出操作,printf 字符串格式 输出内容
输出类型:
%ns 代表字符串 n表示输出几个字符串
%ni 输出整数, n表示输出几个数字
%n.mf 输出小数, n表示有输出n位,有m位小数
示例:
printf "this num is %i" 123
printf "this str is %s" 'str'
printf "this float is %8.2f" 123222.3333
输出转义字符时,用双引号括起。
awk命令:
awk '条件1{动作1} 条件2{动作2}...' 文件名,条件满足时,执行动作
操作文本:
student.txt:
ID Name gender Mark
1 1 1 1
2 2 2 2
3 3 3 3
获取第一列和第三列:
awk '{printf $2 "\t" $4 "\n"}' student.txt
$1表示第一列,$0表示所有的列
查看内存:df -h |awk '{printf $1 "\t" $4 "\n"}'
条件表达时:
BEGIN:在读取之前的操作,可以指定分隔符,使用FS内置变量设置
END:在读取玩之后的操作
示例:
awk 'BEGIN{FS=":"}{printf $1 "\n"}' /etc/passwd //输出所有用户
cat /etc/passwd | grep /bin/bash | awk 'BEGIN{FS=":"} {printf $1 "\t" $3 "\n"}'
sed: sed命令是用来进行文件内容修改的。
格式:sed 选项 '动作‘ 文件名
选项:
-n :将处理的行打印到屏幕
-e :允许多条sed命令
-i :修改源文件
动作:
a 追加
c 行替换
i 插入
p 打印
s 字符替换,格式为 “行范围s/就字符/新字符/g”
示例:
sed -n '2p' student.student //显示第二行
sed '2a haha' student.txt //在第二行追加haha
sed '2i haha' student.txt //在第二行前插入
sed '2c haha' student.txt //替换第二行
sed '3s/2/haha/g' student.txt //将第三行的所有 2 替换为haha
sed -e 's/2/haha/g;s/1/ha/g' student.txt 替换第一行的字符和第二行的字符
sort :
排序命令:可以对文本进行排序,以行显示。
选项:
-f : 忽略大小写
-n : 以数字大小统计,默认以字符排序
-r : 反向排序
-t : 指定分隔符
-k : 第几个字符进行排序,与-t 混合使用
示例:
sort /ect/passwd //默认排序
sort -n -t ":" -k 3 /etc/passwd // 以: 为分隔符,以第三个分割的字符进行数字排序
wc : 用来统计行数 , 单词数,字符数。