我需要帮助来理解 awk Linux 命令
I need help understanding a awk Linux Command
awk -F: '!( < 512 && < 30)' /etc/passwd
在 Linux 中做什么?我只发现 awk 是一种脚本语言,但无法理解这一切。
这是shorthand
awk -F: '!( < 512 && < 30) { print; }' /etc/passwd
表示“显示 NOT(:
分隔的字段 #3 小于 512 且字段 #4 小于 30)的所有行”来自 /etc/passwd
借助man 5 passwd
和DeMorgan定律,这对应于“显示用户id大于512或组id大于30的用户帐户列表”。
此逻辑可能旨在仅显示系统上的人类用户,因为通常的惯例是为他们分配比 non-human 更高的 UID,系统用户如 apache 和 mysql.
awk
世界基于模式 condition{action}
,这适用于输入文件的每个输入 record/input 行。
如果缺少 {action}
则执行默认操作 = print
这实际上意味着 print [=14=]
如果缺少 (condition)
,则使用默认条件 true
-F:
将字段分隔符调整为 :
而不是 awk 默认的字段分隔符 [[space]]
。 awk 中的字段分隔符几乎可以是任何东西,包括正则表达式和逻辑(即或)表达式。
</code> , <code>
输入行的第 3 和第 4 个字段(在您的代码中由 :
分隔)
( < 512 && < 30)
是条件,&&
是AND运算符。
条件前面的!
只是一个NOT运算符,用来反转(condition)
的逻辑
awk 更多有趣的选项:
[=27=]
: 是从文件中读取的整个输入行,没有拆分
$NF
: 是输入行的最后一个字段
NF
: 是字段数
RS
:输入的record/line分隔符可以调整为不是\n
(awk默认)
ORS
: 输出记录分隔符(awk默认是\n
)
尝试 :
echo "one two three" | awk '{print }'
echo "one two three" |awk '1' RS=" " ORS="\n"
关于 awk
的更多信息可以在 man awk
和 info awk
或官方 awk 文档中找到,即 https://www.gnu.org/software/gawk/manual/gawk.html for gnu awk - gawk
awk -F: '!( < 512 && < 30)' /etc/passwd
在 Linux 中做什么?我只发现 awk 是一种脚本语言,但无法理解这一切。
这是shorthand
awk -F: '!( < 512 && < 30) { print; }' /etc/passwd
表示“显示 NOT(:
分隔的字段 #3 小于 512 且字段 #4 小于 30)的所有行”来自 /etc/passwd
借助man 5 passwd
和DeMorgan定律,这对应于“显示用户id大于512或组id大于30的用户帐户列表”。
此逻辑可能旨在仅显示系统上的人类用户,因为通常的惯例是为他们分配比 non-human 更高的 UID,系统用户如 apache 和 mysql.
awk
世界基于模式 condition{action}
,这适用于输入文件的每个输入 record/input 行。
如果缺少 {action}
则执行默认操作 = print
这实际上意味着 print [=14=]
如果缺少 (condition)
,则使用默认条件 true
-F:
将字段分隔符调整为 :
而不是 awk 默认的字段分隔符 [[space]]
。 awk 中的字段分隔符几乎可以是任何东西,包括正则表达式和逻辑(即或)表达式。
</code> , <code>
输入行的第 3 和第 4 个字段(在您的代码中由 :
分隔)
( < 512 && < 30)
是条件,&&
是AND运算符。
!
只是一个NOT运算符,用来反转(condition)
awk 更多有趣的选项:
[=27=]
: 是从文件中读取的整个输入行,没有拆分
$NF
: 是输入行的最后一个字段
NF
: 是字段数
RS
:输入的record/line分隔符可以调整为不是\n
(awk默认)
ORS
: 输出记录分隔符(awk默认是\n
)
尝试 :
echo "one two three" | awk '{print }'
echo "one two three" |awk '1' RS=" " ORS="\n"
关于 awk
的更多信息可以在 man awk
和 info awk
或官方 awk 文档中找到,即 https://www.gnu.org/software/gawk/manual/gawk.html for gnu awk - gawk