我知道这会打印出 ip 和用户名,但有人可以帮我解释一下吗,非常简单,谢谢! UNIX

我知道这会打印出 ip 和用户名,但有人可以帮我解释一下吗,非常简单,谢谢! UNIX

我知道这会打印出 IP 和用户名,但有人能帮我简单解释一下吗,谢谢!unix

w -hs|awk '{printf "%s\t%s\n",$1,$3}'

答案1

w -hs- 这会打印谁已登录系统,但正在使用-hs使输出更干净的标志

然后将结果通过w -hs管道传输到awk用于printf格式化输出的对象。

%s是格式说明符,\t表示 TAB。\n代表换行符。在这些之后,我们有$1$3。所以这整件事awk '{printf "%s\t%s\n",$1,$3}'意味着打印输出中的第一个和第三个字符串,在它们之间放置一个制表符并在换行符上打印结果

对我来说,这与使用相同awk '{print $1, "", $3}'

答案2

分解一下:

首先注意“管道”符号|。这告诉我们这是一个两部分命令:输出第一个命令的内容w -hs被“传送”到第二个命令awk '{printf "%s\t%s\n",$1,$3}'以进行进一步处理。

第一个命令w -hs输出有关谁登录到系统的信息(man w有关详细信息,请参阅 参考资料)。在本例中,添加了两个选项-h-s来格式化输出。有关详细信息,请参阅COMMAND-LINE OPTIONS中的部分man w。更好的是,在终端中输入此命令并检查它。

的输出w -hs被“管道”到awk,这意味着它将awk对 的输出进行操作w -hs

awk是一种通常用于文本处理的语言;请参阅man awk详细信息,或从互联网上无数的教程之一awk了解更多信息。awk代码是相当稠密,并且理解它可能需要一些研究。

表达 '{printf "%s\t%s\n",$1,$3}'告诉awk我们如何处理从管道传输到它的数据w -hs。总之,这些说明是:

使用printf,将字段(或列)1 和 3 ( ) 中的值打印为由制表符 ( ) 分隔的$1,$3“字符串”( ),然后在末尾添加“换行符”( )。%s\t\n

请注意,这是一个简短的总结awk,省略了许多重要的细节。如果您的兴趣或工作描述需要更详细地了解awk,请参阅各种在线资源或硬拷贝资源。

相关内容