一、基础正则表达式
1、正则表达式
正则表达式:用来在文件中匹配符合条件的字符串,正则是包含匹配,grep、awk、sed等命令支持正则表达式,
语法:grep ["选项"] 文件名 如grep “*” student.txt 提取行
选项含义:“[]” 匹配中括号内任意字符串
“*” 匹配*前字符零次或任意多次
”[^]”匹配初中括号内字符外的任意字符
”{n}” 表示前面的字符连续出现n次 如a{3} 表示a连续出现3次
”{n,}” 表示前面的字符最少出现n次 如a{3,} 表示a最少出现3次
"{n,m}" 表示前面的字符最少出现n次,最多出现m次
“.” 匹配除换行符外的任意一个字符
“Λ” 匹配首行 如“Λhello” 匹配以hello开头的行
“¢” 匹配结尾 如“¢hello” 匹配以hello结尾的行
2、 通配符:用来匹配符合条件的文件名,是完全匹配,Is、find、cp等命令不支持正则表达式,只能使用shell自己的通配符进行
匹配。 * 、? 、[]
二、字符截取命令
1、cut命令——提取列,不能正确提取空格符的列,只能是制表符,即tab键
语法: cut [选项] 文件名 选项:-f :指定提取的列 如 cut -f 2 student.txt 表示提取文件名为student.txt的第2列 或cut -f 2,3 student.txt(提取多列用逗号分开)
-d :按照指定分隔符分隔列 如cut -d "所指定的分隔符" 文件名 cut -d ":" student.txt
cut -d ":" -f 2 student.txt
cut 提取列,只能识别: , 。等分隔符,制表符,但是不能识别空格符
2、printf命令
语法:printf ‘输出类型输出格式’ 输出内容
printf不会自动加入换行符,而print会自动加入换行符
3、awk命令
语法:awk '条件1 {动作1} 条件2 {动作2}.....' 文件名
一般是使用关系表达式作为条件,默认识别的分隔符是:和,
awk ‘BEGIN {动作a} 条件1 {动作1} 条件2 {动作2}’ 表示在所有数据度处理之前先执行动作a,然后在执行后面的动作1、2
awk ‘END {动作a} 条件1 {动作1} 条件2 {动作2}’ 表示在所有数据处理完之后执行动作a
4、sed命令(流编辑器)
语法:sed [选项] ‘[动作]’ 文件名
选项:-n 将经过sed命令处理的数据输入到屏幕上
-e 允许对输入数据进行多条sed命令处理
-i 用sed的修改结果直接修改读取数据的文件,而不是将修改结果输入到屏幕上
动作: a :追加,在当前行后添加一行或多行
c :行替换,用c后面的数据替换原数据行
i : 插入 ,在当前行之前插入一行或多行
d :删除指定的行
p :打印指定的行
s :字符串替换, 用一个字符串替换另一个字符串 “行范围s/旧字符串/新字符串/g”
三、字符处理命令
四、条件判断
五、流程控制