正则表达式和sed行编辑器

正则表示式:
对文本内容进行过滤、查找、匹配,正则可以匹配完整的大小写。
  .   元字符:点
.表示任意单个字符
转义符:\
()分组\(\)
[] 匹配范围之内的任意单个字符。
[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:在尾行上一行添加(不常用)

字符串互换

提取版本号

打印指定行

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值