awk '$2 == \"disk\" NR!=/dev/nvme0n1 {print $1}'
时间: 2024-02-17 07:01:52 浏览: 129
这个 awk 命令有一些语法错误。如果你想要筛选出第二列等于 "disk" 并且行号不等于包含 "/dev/nvme0n1" 的行,应该使用以下命令:
```
awk '$2 == "disk" && NR!=FNR && !/\/dev\/nvme0n1/ {print $1}' file.txt
```
这个命令使用了以下几个部分:
- `$2 == "disk"`:筛选出第二列等于 "disk" 的行。
- `NR!=FNR`:避免输出文件的第一行(即文件名)。
- `!/\/dev\/nvme0n1/`:筛选掉包含 "/dev/nvme0n1" 的行。
- `{print $1}`:打印每一行的第一列。
如果 file.txt 文件的内容如下:
```
/dev/nvme0n1 disk1
/dev/sda disk
/dev/sdb disk
/dev/nvme0n2 disk2
```
那么这个命令的输出将是:
```
/dev/sda
/dev/sdb
```
这些是满足条件的行的第一列。
相关问题
用awk筛选出行中不包含 /dev/nvme0n1的行
可以使用以下命令,在 awk 中筛选出行中不包含 "/dev/nvme0n1" 的行:
```
awk '!/\/dev\/nvme0n1/ {print}' file.txt
```
这个命令中使用了一个简单的模式匹配来查找行中是否包含 "/dev/nvme0n1"。如果行中不包含该字符串,那么这一行将被打印出来。
如果 file.txt 文件的内容如下:
```
/dev/nvme0n1 disk1
/dev/sda disk
/dev/sdb disk
/dev/nvme0n2 disk2
```
那么这个命令的输出将是:
```
/dev/sda disk
/dev/sdb disk
/dev/nvme0n2 disk2
```
这些行中都不包含 "/dev/nvme0n1"。
用awk筛选出第二列等于 "disk" 并且行中不包含 "/dev/nvme0n1" 的行
可以使用以下命令,在 awk 中同时筛选出第二列等于 "disk" 并且行中不包含 "/dev/nvme0n1" 的行:
```
awk '$2 == "disk" && !/\/dev\/nvme0n1/ {print}' file.txt
```
这个命令与之前的命令类似,只是删除了 `NR!=FNR` 条件,因为在这种情况下,我们不需要考虑输出文件的第一行。
因此,这个命令将从 file.txt 文件中筛选出第二列等于 "disk" 并且行中不包含 "/dev/nvme0n1" 的行,并将这些行打印出来。
如果 file.txt 文件的内容如下:
```
/dev/nvme0n1 disk1
/dev/sda disk
/dev/sdb disk
/dev/nvme0n2 disk2
```
那么这个命令的输出将是:
```
/dev/sda disk
/dev/sdb disk
```
这些是满足条件的行。
阅读全文