正则表示式:
对文本内容进行过滤、查找、匹配,正则可以匹配完整的大小写。
. 元字符:点
.表示任意单个字符
转义符:\
()分组\(\)
[] 匹配范围之内的任意单个字符。
[0-9a-zA-Z]
[^az]:取反,显示不包含的内容
[[:blank:]]:匹配空格,不是tab键的空格。
通配符:匹配的是文件名,而且不能精确的匹配大小写。
基本正则表达式:
表示次数:
*:匹配前面的字符任意次,包括0次,尽可能长的匹配。
.*:匹配前面的字符任意次,但是不包括0次。也就是匹配所有。
\?:匹配前面的字符出现0次,或者1次,有且只有一次。
\+:匹配前面出现的字符,至少出现一次,也就是>=1。
\{n\}:匹配前面出现的字符等于几次。必须是n次
\{m,n\}:匹配前面出现的字符最少m次,最多是n次
\{,n\}:匹配前面的字符最多N次,没有也算。
\{n,\}:匹配前面的字符最少N次,只要连续出现N次,后面的都算。
位置锚定:
^:行首锚定,以什么为开头
$:行尾锚定,以什么为结尾
^root$:匹配行,单独的一行只有root
^$:空白行。
^[[:space:]]*$空白行
\<或者\b词首锚定
用于匹配单词模式的左侧从左往右全部都算。所有一起都包含,所有算匹配到。
\>或者\b词尾锚定
用于匹配单词模式的右侧只匹配右侧的单词,左侧的单词不匹配。
\broot\b: 匹配这个单词 \b ...\b
\<root\>
分组以及逻辑或
():分组
\|:逻辑或
grep-E 扩展正则表达式
*:匹配前面的字符任意次,包括0次,尽可能长的匹配
*:匹配前面的字符任意次,但是不包括0次。也就是匹配所有。
?:匹配前面的字符出现0次,或者1次,有且只有一次。
+:匹配前面出现的字符,至少出现一次,也就是>=1,
{n}:匹配前面出现的字符等于几次。
{m,n}:匹配前面出现的字符最少M次,最多是n次
{,n}:匹配前面的字符最多N次,没有也算。
{n,}:匹配前面的字符最少N次,只要连续出现N次,后面的都算。
|:表示逻辑或
grep -E 或者 egrep
sed:行编辑器
sed也是按行来处理。
sed是一种流编辑器。每一次处理内容,只有确认才会生效,不确认的,只是把模式空间的临时数据展示给用户,然后删除。
按照文本的行、一行一行向下外理、直到文件的最后一行。
默认情况下:sed都是在模式空间执行,因此元文件不会发生变化。
sed的操作格式:
sed-e"操作" 文件1 文件2
sed -e"操作1;操作2" 文件
-e:指定的命令来处理输入的文本文件,只有一个操作,-e可以省略。多个指令才会用-e
-f:用特定的脚本文件来处理输入的文件。
-i:立即生效
-n:仅显示script处理后的结果
sed-i 立即生效 慎用
sed的操作符:
p:打印
打印:sed -e 'p' test.txt
sed自己还有一个默认输出,再加上p打印,就有两行
-n就是禁止默认输出
sed -n '2p' test.txt
输出指定行的内容。只有第二行,其他的都没有。
1,3p 1到3行 1p;3p 1和3行
sed -n '='test.txt
=号,只显示行号
行号和行内容同时显示
sed -n '$p' test.txt
打印最后一行。
打印1到3行
打印第一行和第三行
两种写法
[root@test1 opt]# sed -n 'n;p' test.txt
n在p的前面,跳过当前一行,打印下一行。
p在前面,打印当前一行,跳下一行继续打印
文本内容过滤----sed
sed -n '/th/p' test.txt
双斜杠括起来p打印
使用正则表达式进行过滤:
sed -n '4,/bash$/p'/etc/passwd
从第四行到结尾为bash的行
sed使用扩展正则表达式:
sed-r 使用扩展正则。{n}{n,}{n,m}{,m}
包含两个99:的所在行
sed删除文件内容:
现在有一个文件,文件名我想保留,但是原有的内容我要删除掉。
免交互删除。
cat /dev/null > test.txt
sed -i 'd' test.txt
指定删除
连续删除
取反
匹配字符串删除
删除空行
sed替换文件内容:
操作符:
s:替换字符串
c:整行替换
y:单字符替换,替换前后的字符长度要保持一致。
替换字符串
/p 替换第一个root /2p替换第二个
全部替换用 /gp
把root开头的行,开头的空格替换成#
sed -n '/^root/ s/^/#/p' /etc/passwd
大写换小写sed 's/[A-Z]/ \l&/g' test.txt
小写转大写 sed 's/[a-z]/ \U&/g' test.txt
整行替换
替换ip地址
单字符替换
on 替换 12 o替换1 n替换2 前后长度要一致。
sed添加文件内容
a:在匹配行的下一行添加内容
i:在匹配行的上一行添加内容
r:可以从其他文件读取内容,然后在匹配行的行后添加。
$a:在尾行下一行添加内容(常用) $i:在尾行上一行添加(不常用)