【Linux】正则表达式实验操作实例

正则表达式是一种强大的工具,用于在文本中查找、匹配和替换特定的字符串模式。

实验目的

  1. 掌握正则表达式的表达方式
  2. 掌握grep/egrep命令的用法
  3. 掌握sed 命令的用法
  4. 掌握awk命令的用法

实验内容

1. 写出满足下列条件的所有行的正则表达式:

  • 以“a”开头;
    以“b”结尾;
    以“a”开头,中间任意,最后以“b”结尾;
    以“c”“d”或“e”开头;
    包含“f”,它后面紧跟着“g”;
    包含“f”,隔1个字母之后是“g”;
    以小写字母开头;
    包含数字;
    以“h”开头,含有字母“i”;
    只含有4个字母;
    只含有4个字母,但不包含“j”。

2. 用sed命令完成下列要求:

  • ①把/etc/passwd复制到/rool/pwd.txt,用scd打印所有行;
    ②打印pwd. txt 的3到7行;
    ③打印pwd.txt 中包含‘root’的行;
    ④删除pwd. txt 的14行以及以后所有行;
    ⑤删除 pwd. txt 中包含‘bash’的行;
    ⑥替换 pwd. txt 中‘root’为‘toor’;
    ⑦替换 pwd.txt 中‘/sbin/nologin’为‘/bin/login’
    ⑧删除 pwd. txt中2到8行中所有的数字;
    ⑨删除pwd.txt中所有特殊字符(除了数字以及大小写字母);
    ⑩在 pwd.txt 中10行到末行最前面加‘aaa:’。

3. 用awk 命令完成下列要求:

  • ①用awk 打印整个pwd.txt;
    ②查找所有包含‘bash’的行;
    ③用‘:’作为分隔符,查找第三段等于0的行;
    ④用‘:’作为分隔符,查找第一段为‘root’的行,并把该段的‘root’换成‘toor’(可以连同sed一起使用);
    ⑤用‘:’作为分隔符,打印最后一段;
    ⑥打印行数大于10的所有行;
    ⑦用‘:’作为分隔符,打印所有第三段小于第四段的行;
    ⑧用‘:’作为分隔符,打印第一段以及最后一段,并且中间用‘@’连接(例如,第一行的形式’ root@ /bin/bash‘)。

4. 用所学命令完成下列要求:

  • ①取得/root 文件的权限对应的数字内容,如-rwxr-xr-x为755,要求使用命令取得755或0755 这样的数字(至少两种方法完成);
    ②取得 Linux 操作系统对应的合法IP 地址,如192.168.136.100,要求使用命令取得类似这样的IP 地址(至少两种方法完成)。

实验过程

  • 创建一个如下内容的grep.txt文件:
123rot:x:0:0:/rot:/bin/bash
123operator:x:11:0:operator:/root:/sbin/nologin
123operator:x:11:0:operator:/rooot:/sbin/nologin
123roooot:x:0:0:/rooooot:/bin/bash
1231111111111111111111111111111111111

创建grep文件来进行如下操作

  1. 写出满足下列条件的所有行的正则表达式:
    为了验证正则表达式是否正确可以根据题目在grep文件中增添一些字符串。
  • ①以“a”开头;
    ②以“b”结尾;
    ③以“a”开头,中间任意,最后以“b”结尾;
    ④以“c”“d”或“e”开头;
    ⑤包含“f”,它后面紧跟着“g”;
    ⑥包含“f”,隔1个字母之后是“g”;
$ sudo grep '^a' grep.txt
$ sudo grep 'b$' grep.txt
$ sudo grep '^ab$' grep.txt
$ sudo grep '^ab$' grep.txt
$ sudo grep '^[c-e]' grep.txt
$ sudo grep '{fg}' grep.txt
$ sudo grep 'f[^g]g' grep.txt

在这里插入图片描述

  • ⑦以小写字母开头;
    ⑧包含数字;
    ⑨以“h”开头,含有字母“i”;
    ⑩只含有4个字母;
    ⑪只含有4个字母,但不包含“j”。
$ sudo grep '^[a-z]' grep.txt
$ sudo grep '^[0-9]' grep.txt
$ sudo grep '^h\(.*\)i' grep.txt
$ sudo grep '[a-zA-Z]{4}' grep.txt
$ sudo grep '[a-fh-zA-Z]{4}' grep.txt

在这里插入图片描述

用sed命令完成下列要求

  • ①把/etc/passwd复制到/rool/pwd.txt,用scd打印所有行;
$ sudo cp /etc/passwd /root/pwd.txt
$ sudo sed -n '1,$'p /root/pwd.txt

在这里插入图片描述

  • ②打印pwd. txt 的3到7行;
    ③打印pwd.txt 中包含‘root’的行;
    ④删除pwd. txt 的14行以及以后所有行;
    ⑤删除 pwd. txt 中包含‘bash’的行;
$ sudo sed -n '3,7'p /root/pwd.txt
$ sudo sed -n '/root/'p /root/pwd.txt
$ sudo sed -n '14,$'d /root/pwd.txt
$ sudo sed -n '/bash/'p /root/pwd.txt

在这里插入图片描述

  • ⑥替换 pwd. txt 中‘root’为‘toor’;
$ sudo sed -n '1,$s/root/toor/g' /root/pwd.txt
$ sudo sed -n '1,$'p /root/pwd.txt

在这里插入图片描述

  • ⑦替换 pwd.txt 中‘/sbin/nologin’为‘/bin/login’
$ sudo sed -n '1,$s@/sbin/nologin@/bin/login@g' /root/pwd.txt
$ sudo sed -n '1,$'p /root/pwd.txt

在这里插入图片描述

  • ⑧删除 pwd. txt中2到8行中所有的数字;
$ sudo sed -n '2,8s/[0-9]//g' /root/pwd.txt
$ sudo sed -n '1,$'p /root/pwd.txt

在这里插入图片描述

  • ⑨删除pwd.txt中所有特殊字符(除了数字以及大小写字母);
$ sudo sed 's/[^0-9a-zA-Z]//g' /root/pwd.txt

在这里插入图片描述

  • ⑩在 pwd.txt 中10行到末行最前面加‘aaa:’。
$ sudo sed -n '10,$s/^.*$/aaa&/' /root/pwd.txt
$ sudo sed -n '1,$'p /root/pwd.txt

在这里插入图片描述

用awk 命令完成下列要求

  • ①用awk 打印整个pwd.txt;

在这里插入图片描述

  • ②查找所有包含‘bash’的行;
    ③用‘:’作为分隔符,查找第三段等于0的行;

在这里插入图片描述

  • ④用‘:’作为分隔符,查找第一段为‘root’的行,并把该段的‘root’换成‘toor’(可以连同sed一起使用);

在这里插入图片描述

  • ⑤用‘:’作为分隔符,打印最后一段;

在这里插入图片描述

  • ⑥打印行数大于10的所有行;

在这里插入图片描述

  • ⑦用‘:’作为分隔符,打印所有第三段小于第四段的行;

在这里插入图片描述

  • ⑧用‘:’作为分隔符,打印第一段以及最后一段,并且中间用‘@’连接(例如,第一行的形式’ root@ /bin/bash‘)。

在这里插入图片描述

用所学命令完成下列要求

  • ①取得/root 文件的权限对应的数字内容,如-rwxr-xr-x为755,要求使用命令取得755或0755 这样的数字(至少两种方法完成);

在这里插入图片描述

  • ②取得 Linux 操作系统对应的合法IP 地址,如192.168.136.100,要求使用命令取得类似这样的IP 地址(至少两种方法完成)。

在这里插入图片描述
在这里插入图片描述

  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux正则表达式是一种用来匹配文本内容的表达式,它可以方便地在Linux系统中进行文本处理和搜索。下面是一份Linux正则表达式大全,包括常用的正则表达式语法和示例: 1. 字符匹配 正则表达式语法:字符 示例: * 匹配单个字符: ``` a 匹配'a'字符 ``` * 匹配多个字符: ``` [abc] 匹配'a'、'b'或'c'字符 [^abc] 匹配除'a'、'b'、'c'以外的任意字符 [a-z] 匹配小写字母a到z中的任意一个字符 [A-Z] 匹配大写字母A到Z中的任意一个字符 [0-9] 匹配数字0到9中的任意一个字符 ``` 2. 重复匹配 正则表达式语法:字符+、字符*、字符? 示例: * 匹配多个字符: ``` a+ 匹配一个或多个'a'字符 a* 匹配零个或多个'a'字符 a? 匹配零个或一个'a'字符 ``` 3. 边界匹配 正则表达式语法:^、$ 示例: * 匹配行首和行尾: ``` ^a 匹配以'a'字符开头的行 a$ 匹配以'a'字符结尾的行 ``` 4. 逻辑匹配 正则表达式语法:字符1|字符2 示例: * 匹配两种字符中的任意一种: ``` a|b 匹配'a'或'b'字符 ``` 5. 分组匹配 正则表达式语法:(字符) 示例: * 匹配分组中的字符: ``` (a) 匹配'a'字符 ``` 6. 转义字符 正则表达式语法:\字符 示例: * 匹配特殊字符: ``` \. 匹配'.'字符 \* 匹配'*'字符 \+ 匹配'+'字符 \? 匹配'?'字符 \( 匹配'('字符 \) 匹配')'字符 ``` 以上是Linux正则表达式的常用语法和示例,可以根据实际需求进行学习和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值