我在 /etc/shadow 上运行了这个小脚本:
awk '{ FS = ":" } { print $1, $2 }' /etc/shadow
它在除根记录之外的所有行上执行它应该做的事情,即它只打印整个记录。知道为什么 ?
我以root身份登录执行它。系统的slackware。内核 3.2.29。这很令人费解吧?
问题是你FS
在awk
读取第一个输入后设置,所以它会使用默认值FS
,这是a space
root 的记录。
您应该FS
在awk
读取任何输入之前进行设置。有很多方法可以做到这一点:
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)