正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。 grep、awk、sed等命令可以支持正则表达式。
通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了。
元字符:
* 元字符详解:
假设文件a.txt 有为一下内容: a aa aaa aaaa aaaaa b bb bbb bbbb bbbbb 当我们使用命令 grep . a* 是,此时会将所有的字符都输出,因为* 匹配前面表达式0个或多个,所以都可以匹配
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 : 用来统计行数 , 单词数,字符数。