这有效:
cat /etc/passwd | awk -F':' '{print $1, $2, $3, $4, $5, $6, $7}'
...
root x 0 0 root /root /bin/bash
daemon x 1 1 daemon /usr/sbin /usr/sbin/nologin
...
这不起作用:
cat /etc/passwd | awk -F':' '{print $0}'
...
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...
感谢您的帮助 :)
$0
表示整行,包括输入字段分隔符。您只需设置一个字段,就可以使用输出字段分隔符对其进行拆分和重新连接:
(我改为直接从文件中读取,而不是折磨
cat
;-)这记录在手册的更改字段内容部分中:
$0 字段只是一行,没有进行解析。您需要使用 NF 变量(字段数量,由 FS 确定)循环每个字段:
cat /etc/passwd | awk -F':' '{for (i=1;i<=NF;i++) {printf "%s ",$i}; printf "\n"};'