我想输出每个列/字段,但是当我使用变量执行此操作时,它会忽略作为单个的$0
默认变量,因此仍然会打印。OFS
space
:
这是我尝试过的命令:
cat /etc/passwd | awk -F':' '{print $0}'
Run Code Online (Sandbox Code Playgroud)
给定此示例输入:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
Run Code Online (Sandbox Code Playgroud)
我从命令中得到以下输出:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
Run Code Online (Sandbox Code Playgroud)
但我希望我的输出看起来像这样:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助 :)
Tob*_*ght 13
$0
表示整行,包括输入字段分隔符。
您只需设置一个字段,就可以使用输出字段分隔符对其进行拆分和重新连接:
\n</etc/passwd awk -F: \'{$1=$1;print}\'\n
Run Code Online (Sandbox Code Playgroud)\n(我改为直接从文件中读取,而不是折磨cat
;-)
这记录在GNU 实现手册的更改字段内容awk
部分(又名gawk
):
\n\n最后,有时
\nawk
使用字段 和 的当前值强制重建整个记录是很方便的OFS
。为此,请使用看似无害的赋值:Run Code Online (Sandbox Code Playgroud)\n</etc/passwd awk -F: \'{$1=$1;print}\'\n
这迫使
\nawk
重建记录。它确实有助于添加注释,\nas 我们\xe2\x80\x99 已在此处显示。