文章目录
一、正则表达式与通配符
1.1 正则表达式与通配符简介
正则表达式:用于在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式。
通配符(* ?[]):用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,只能使用shell自己的通配符来进行匹配。
*:代表任意字符(多个字符)
?:代表任意一个字符
[]:[]的其中任意一个字符
1.2 基础正则表达式
* 代表前一个字符匹配0次或多次:
. 代表除换行符以外的任意一个字符
^代表匹配行首,$匹配行尾
[ ]代表匹配中括号中指定的任意一个字符,只匹配一个;[^]匹配除中括号的字符以外的任意一个字符
\ 转义符
\ {n \ }代表前面的字符恰好出现n次的行;\ {n,\ }代表前面的字符最少出现n次的行
\ {n,m \ }代表前面的字符最少出现n次最多出现m次的行
二、字符截取命令
2.1 列截取命令cut
cut 命令是提取列,grep命令是提取行
语法:cut 【选项】文件名
选项:
-f 列号:提取第几列
-d分隔符:按照指定分隔符分割列
2.2 格式化输出命令
printf是格式化输出命令,不同于echo
语法:printf ‘输出类型、输出格式’ 输出内容
输出类型:
%ns:输出字符串,n是数字指带输出几个字符
%ni:输出整数。n是数字指带输出几个数字
%m.nf:输出浮点数。m,n是数字,指带输出的总位数和小数位数。例%8.2代表输出8位数,2位是小数,6位是整数
输出格式:
2.3 列截取命令awk
在awk命令的输出中支持print和printf命令:
print:print命令会在每个输出后自动加入一个换行符(linux默认没有print命令)
printf:printf是标准输出命令,并不会自动加入换行符,如果需要换行,需要手动加入换行符
常用cut来进行列提取,但是如果列之间用空格输出会提取不出来,因此用awk命令
语法:awk ‘条件1{动作1} 条件2{动作2} 条件3{动作3}…’ 文件名
条件:一般使用关系表达式
动作:格式化输出、流程控制语句
2.4 sed命令
sed是一种几乎包括在所有unix平台(包括linux)的轻量级流编辑器。(vim也是编辑器但是只能编辑文件)。sed主要用来将数据进行选取、替换、删除、新增的命令。sed不仅可以操作文件,还可以利用管道符对命令的结果进行操作。
语法:sed [选项] ‘[动作]’ 文件名
选项:
-n:一般sed命令会把所有数据都输出到屏幕,此选项则只会把经过sed命令处理的行输出到屏幕。
-e:允许对输入数据应用多条sed命令编辑
-i:用sed的修改结果,直接修改读取数据的文件,而不是由屏幕输出
三、字符处理命令
3.1 排序命令sort
语法:sort [选项] 文件名
选项:
-f:忽略大小写
-n:以数值型进行排序,默认使用字符串型排序
-r:反向排序
-t:指定分隔符,默认分隔符是制表符
-k n[,m]:按照指定的字段范围排序。从第n字段开始,m字段结束
3.2 统计命令wc
语法:wc [选项] 文件名
选项:
- l:只统计行数
-w:只统计单词数
-m:只统计字符数