使用sed流编辑器和正则表达式,将/etc/passwd中所有的数字显示出来
时间: 2023-07-15 16:15:00 浏览: 94
可以使用sed命令结合正则表达式来实现:
```bash
sed 's/[^0-9]*/ & /g' /etc/passwd
```
这个命令的含义是:将每行中非数字的字符替换为空格,然后输出所有数字。其中,正则表达式`[^0-9]*`表示匹配0个或多个非数字字符。`&`表示匹配到的内容本身。`g`表示全局替换。
例如,假设/etc/passwd文件内容如下:
```
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
```
则执行上述sed命令后,输出结果为:
```
0 0
1 1
2 2
```
相关问题
4. 使用sed流编辑器,显示/etc/passwd文件中,将所有行逆序显示输出
可以使用以下命令来实现:
```
sudo sed -n '1!G;h;$p' /etc/passwd
```
解释:
- `sudo`:使用管理员权限运行命令,因为 `/etc/passwd` 是只有管理员才有读取权限的文件。
- `sed`:流编辑器。
- `-n`:不输出模式空间的内容。
- `1!G`:将除第一行以外的所有行追加到保持空间(hold space)的内容之后,并在两者之间插入一个换行符。
- `h`:将模式空间的内容复制到保持空间中。
- `$p`:在处理完最后一行后,将保持空间的内容输出。
因此,以上命令会将 `/etc/passwd` 文件的所有行逆序显示输出。
使用sed流编辑器,将/etc/passwd文件中包含了root行的字符个数统计出来
可以使用以下命令来实现:
```
sed -n '/root/ s/[^[:alnum:]]//gp' /etc/passwd | wc -c
```
解释:
- `-n` 参数表示只输出匹配到的行,不输出其他行。
- `/root/` 表示匹配包含 "root" 的行。
- `s/[^[:alnum:]]//g` 表示删除所有非字母数字字符,只留下字母数字字符。
- `p` 表示打印匹配到的行。
- `wc -c` 统计字符数。
这个命令会将 `/etc/passwd` 文件中包含 "root" 的行中的所有字母数字字符都删除,只留下空格和冒号等分隔符,然后再统计字符数,即为包含了 "root" 行的字符数。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)