/etc/shadow & gawk

Pun*_*rya 4 awk

我在 /etc/shadow 上运行了这个小脚本:

awk '{ FS = ":" } { print $1, $2 }' /etc/shadow

它在除根记录之外的所有行上执行它应该做的事情,即它只打印整个记录。知道为什么 ?

我以root身份登录执行它。系统的slackware。内核 3.2.29。这很令人费解吧?

cuo*_*glm 7

问题是你FSawk读取第一个输入后设置,所以它会使用默认值FS,这是a spaceroot 的记录。

您应该FSawk读取任何输入之前进行设置。有很多方法可以做到这一点:

awk -F: '{print $1, $2}' /etc/shadow
Run Code Online (Sandbox Code Playgroud)

或者:

awk '{print $1, $2}' FS=: /etc/shadow
Run Code Online (Sandbox Code Playgroud)

或者:

awk 'BEGIN{FS=":"}{print $1, $2}' /etc/shadow
Run Code Online (Sandbox Code Playgroud)