awk '{{print $(NF-1)}}' 中为什么要使用两个{}
时间: 2023-11-01 12:57:57 浏览: 41
抱歉,我之前的回答有误。在 awk 中,每个规则或动作都应该用花括号 `{}` 括起来,而不是使用两个花括号。
正确的命令应该是 `awk '{print $(NF-1)}'`,用单个花括号包围打印语句即可。
解析该命令:
- `awk` 是命令本身。
- `'...'` 是 awk 的脚本部分,用单引号括起来。
- `print $(NF-1)` 表示打印每行的倒数第二个字段。
因此,当你在一个文件或输入流中运行这个命令时,它将输出每行的倒数第二个字段。
相关问题
解释一下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中NF和NR以及$NF和!NF的用法详解
在awk中,NF和NR是两个内置变量,分别表示当前记录(行)中的字段数和当前处理的记录(行)数。而$NF表示当前记录(行)中的最后一个字段,!NF则表示当前记录(行)中是否有字段。
具体用法如下:
1. NF:
在awk的处理过程中,每个记录(行)被分割成若干个字段,这些字段可以通过$1, $2, $3, …, $NF来引用。而NF就是表示当前记录的字段数,可以在程序中使用。
例如,如果要打印每行的字段数,可以使用以下命令:
```
awk '{print NF}' file.txt
```
2. NR:
NR表示当前处理的记录(行)数,可以在程序中使用。例如,如果要打印文件的行号,可以使用以下命令:
```
awk '{print NR, $0}' file.txt
```
其中$0表示当前记录(行)的全部内容。
3. $NF:
$NF表示当前记录(行)中的最后一个字段。例如,下面的命令会打印每行的最后一个字段:
```
awk '{print $NF}' file.txt
```
4. !NF:
!NF表示当前记录(行)中是否有字段。如果当前记录中没有字段,则!NF为真,否则为假。例如,如果想打印没有字段的行,可以使用以下命令:
```
awk '!NF' file.txt
```
上述命令将打印文件中所有没有字段的行。
总之,NF和NR是awk中常用的内置变量,可以帮助我们进行字符串处理和统计。而$NF和!NF则可以用来引用当前记录(行)的最后一个字段和判断当前记录(行)是否有字段。