正则表达式
基础正大表达式
查看特定字符 grep
grep-n 'the' test.txt
grep-in 'the' test.txt
-n 显示行号
-i 不区分大小写
-v 反转查找
[] :中括号里可以写元素,内容符合任意元素,就会过滤出来
^ :写在中括号里,代表取反。以^开头,后面的内容,代表以此内容开头
\:转译,失去特殊字符的含义,当作普通字符使用
. :匹配字符,可代替任意字符使用,除换行
{} :
{3} 前一个字符匹配3次
{3,6} 前一个字符匹配3或6次
*:前面的内容匹配0次或多次
扩展正则表达式
sed工具概述
文本处理工具,读取文本内容,根据指定的条件进行处理,如删除、替换、添加等
可在无交互的情况下实现相当复杂的文本处理操作
被广泛应用于shell脚本,以完成自动化处理任务
sed依赖于正则表达式
工作原理
读取 执行 显示
-n显示处理后的内容,p打印
sed -n 'p' test.txt
打印指定行,打印第几行到第几行
sed -n '1p' test.txt sed -n '3,5p' test.txt
进行筛选打印
sed -n '/the/p' test.txt sed -n '/[0-9]$/p' test.txt //打印以数字结尾的内容
删除指定行
sed '3d' test.txt //只显示删除完后的内容但不会删除源文件 sed '3,5d' test.txt //删除第几行到第几行 sed -i '3d' test.txt //没有回显直接进行源文件删除 sed -i '^$' test.txt //删除空格
替换内容
sed -i 's/the/THE/' test.txt //把小写的the替换为THE,只替换每行开头符合条件的 sed 's/a/A/g' test.txt //-g代表全局修改 sed 's/^/#/g' test.txt //开头进行批量注释 sed 's/$/#/g' test.txt //结尾进行批量注释 sed '/^[a-z]/s/^/#/g' test.txt //在所有小写字母开头进行注解
awk工具介绍
功能强的编辑工具
内置变量
FS:指定每行文本的字段分隔符,缺省为空格或制表位
NF:当前处理的行的字段个数
NR:当前处理的行的行号
$0:当前处理行的整行内容
$n:当前处理行的第n个字段
打印每行的第6个字段,并且去掉%跟开头的第一行
df -Th | awk '{print $6}' | awk -F '%' 'NR!=1 {print $1}' 0 0 2 0 3 1 14 0
打印第六列,第七列并去掉开头, 去掉百分号,判断$1>10 就展示对应的$2
df -Th | awk 'NR!=1{print $6,$7}' | awk -F '%' '$1 >10 {print $2}' //$1指的是第一部分过滤后的$6, $2指的是第一部分过滤后的$7
统计以root开头的内容有几行
awk '/^root/{print | "wc -l"}' /etc/passwd
排序以a-z的顺序进行排序
sort 文件名