在awk命令表达式中运用NF、NR和$0变量 (awk命令使用什么变量存储行号)
整理分享在awk命令表达式中运用NF、NR和$0变量 (awk命令使用什么变量存储行号),希望有所帮助,仅作参考,欢迎阅读内容。
内容相关其他词:awk命令printf,awk中调用shell命令,awk-f命令,awk命令的用法,awk命令使用什么变量存储行号,awk命令的用法,awk命令printf,awk命令的用法,内容如对您有帮助,希望把内容链接给更多的朋友!
为了方便awk编程,awk中还引入了一个叫NF的变量。如果在命令表达式中运用没有$符号的NF变量,这个变量将显示一行记录中有多少个字段。如果运用带有$符号的NF变量,这个变量将显示一行记录中最后一个字段。 例如,可以运用下列组合命令列出who命令显示结果中每一行的字段数(列数)goddog@ubuntu:~$who|awk'{printNF}'5 我们可以运用who命令验证一下。从下面的显示结果可知awk命令是将空白符号当作字段的分隔符的:goddog@ubuntu:~$whogoddogtty--:(:0) 如果在第1个例子中的NF之前加上$符号,结果会怎么样呢?goddog@ubuntu:~$who|awk'{print$NF}'(:0) 结果显示确实已经变成了who命令结果的最后一个字段。还记得昨天分享的“知道哪些用户在登录时运用的shell是存放在/bin目录中以及这个shell的名字”的例子,可以利用NF变量完成相似的工作。在这个组合命令中,egrep命令从/etc/passwd文件中抽取包含bin或*in的数据行,之后将grep命令的结果通过管道送给awk命令。awk命令把冒号看成字段的分隔符并将列出每一行的最后一个字段。之后再将awk命令的结果通过管道送给sort命令进行排序并继续后面的*作。注意:命令的最后要加上|sort-n,才能按数字排序:goddog@ubuntu:~$egrep'bin|*in'/etc/passwd|awk-F:'{print$NF}'|sort|uniq-c|sort-n1/bin/sync2/bin/bash/usr/*in/nologin/bin/false 与NF变量相似,awk命令还引入了另一个变量NR,这个变量用来定位所显示的数据行的数目,即显示数据行的编号。因此,可以利用NR变量运用下列命令获得root加目录下wolf子目录中的文件总数并为每个文件和目录编号:root@promote:~#ls-l~/wolf|awk'{printNR":"$0}'1:总用量:-rw-r--r--1rootroot月:delete_disable3:-rw-r--r--1rootroot月:disable_babygirl.wolf 在下例中运用了$0变量,即第0个字段,在这里$0变量表示整个数据行。现在想列出现在*上的所有用户并想在每个记录的最前面显示这个用户登录Linux*所运用的计算机,命令如下:goddog@ubuntu:~$who|awk'{print$6":"$0}':goddogtty--:(:0) 巧妙地运用NF、NR、$0变量可以大大减小shell编程的复杂程度。标签: awk命令使用什么变量存储行号
本文链接地址:https://www.iopcc.com/jiadian/46595.html转载请保留说明!