awk '{if(length($NF) != 10) print $1,$2}' annuaire_sed.txt
时间: 2024-02-29 11:55:26 浏览: 13
您的问题是一个 Linux 的命令行问题,这是一条使用 awk 命令的命令,它的作用是从文件 annuaire_sed.txt 中读取数据,并将最后一列的长度不为10的行的第一列和第二列打印出来。具体解释如下:
- awk:命令本身,用于处理文本文件并生成报告。
- '{if(length($NF) != 10) print $1,$2}':命令的操作部分,其中 $NF 表示最后一列,length 函数用于计算字符串的长度,如果最后一列的长度不等于 10,则打印第一列和第二列。
- annuaire_sed.txt:输入文件的名称。
因此,这个命令会从文件 annuaire_sed.txt 中读取数据,并打印出最后一列的长度不为 10 的行的第一列和第二列。
相关问题
解释一下Linux中 awk '$NF == "" {print $2, $1}' annuaire_temp.txt
这是一个awk命令的脚本,它用于处理文本文件annuaire_temp.txt。下面是脚本中各部分的解释:
- awk是一个文本处理命令,用于逐行处理输入文件并根据指定规则进行操作。
- '$NF == "" {print $2, $1}'是awk的操作规则,它包含两部分:
- $NF是awk内置变量,表示每一行的最后一个字段。这里的$NF == ""表示只选择最后一个字段为空的行。
- {print $2, $1}表示对于符合前面条件的每一行,输出该行的第二个字段和第一个字段,中间用空格分隔。
因此,该脚本的作用是从annuaire_temp.txt中选择最后一个字段为空的行,并输出这些行的第二个字段和第一个字段,中间用空格分隔。
awk '$2 == \"disk\" NR!=/dev/nvme0n1 {print $1}'
这个 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
```
这些是满足条件的行的第一列。