awk '{{print $(NF-1)}}'
时间: 2023-11-01 08:57:57 浏览: 33
这是一个使用 awk 命令的示例。`awk` 是一种强大的文本处理工具,它以行为单位对文本进行处理,并根据指定的规则进行操作。
在给定的命令中,`awk '{{print $(NF-1)}}'` 的作用是打印每行的倒数第二个字段。
让我们解析一下这个命令:
- `awk` 是命令本身。
- `{{print $(NF-1)}}` 是 awk 的脚本部分,用花括号括起来。
- `print $(NF-1)` 表示打印每行的倒数第二个字段。
- `$` 表示当前行。
- `NF` 表示当前行的字段数。
- `$(NF-1)` 表示当前行的倒数第二个字段。
因此,当你在一个文件或输入流中运行这个命令时,它将输出每行的倒数第二个字段。
相关问题
pwd | awk -F/ '{print $NF-1}' 这个命令为什么输出-1
这个命令的作用是获取当前工作目录,并通过管道将其传递给 awk 命令进行处理。在 awk 命令中,-F/ 指定了分隔符为斜杠 (/),然后通过打印 $NF-1,输出路径中倒数第二个斜杠后的内容。
然而,输出结果为 -1 是因为在这个命令中使用了数学运算符,awk 尝试将字符串转换为数字进行计算。由于 $NF 是字符串类型,它表示最后一个字段,而不是一个数字。当尝试将字符串类型的字段减去 1 时,awk 会将其转换为数字类型,但字符串无法转换为有效的数字,因此结果为 -1。
如果你想要输出倒数第二个斜杠后的内容,可以简化命令为:
```bash
basename "$(dirname "$(pwd)")"
```
这个命令使用了 dirname 和 basename 命令来获取当前工作目录的上级目录,并输出上级目录的名称。这样就可以避免 awk 命令中的数值计算问题。
awk -F"/" '{print $(NF-2)"/"$(NF-1)"/"$NF,$0}'中的$(NF-2)几个参数分别是什么作用
在 awk 命令中,`-F` 参数用于指定字段分隔符。在这个例子中,`-F"/"` 表示将输入的每一行按照斜杠 `/` 进行分割成不同的字段。
`$NF` 是 awk 内置的变量,表示当前行的最后一个字段。而 `NF` 则表示当前行的字段数量。
在这段代码中,`$(NF-2)` 的作用是获取当前行倒数第三个字段的值。也就是说,假设当前行的数据是 `/path/to/file.wav`,那么 `$(NF-2)` 就是获取到 `to` 这个字段的值。
类似地,`$(NF-1)` 表示获取当前行倒数第二个字段的值,而 `$NF` 表示获取当前行最后一个字段的值。
所以,这段代码的目的是将输入的每一行按照斜杠进行分割,并输出最后三个字段的值,并用斜杠重新拼接起来,然后再加上原始的完整行数据。以此来实现在文件路径中提取目录信息的功能。