(二)awk命令详解

  1. ls -l | awk 'NR>1 {print $5}'
  • 作用:列出当前目录下每个文件的大小(以字节为单位)。
  • 解释:解释:ls -l 列出详细的文件信息,awk 'NR>1 {print $5}' 从第二行开始打印第 5 列(即文件大小),忽略第一行(总计行)。
  1. ls -l | awk 'NR>1{total=total+$5;print total;}BEGIN {total=0}'
  • 作用:逐行累加文件大小,并在每行打印当前的总大小。
  • 解释:BEGIN {total=0} 初始化变量 total 为 0,NR>1{total=total+$5;print total;} 从第二行开始处理,每行将文件大小累加到 total 并打印当前的 total
  1. ls -l | awk 'NR>1{total=total+$5} BEGIN {total=0} END{print total}'
  • 作用:计算所有文件的总大小,并在最后打印总大小。
  • 解释:BEGIN {total=0} 初始化变量 total 为 0,NR>1{total=total+$5} 从第二行开始处理,每行将文件大小累加到 totalEND{print total} 在处理完所有行后打印总大小。
  1. ls -l | awk 'NR>1{total=total+$5;print total;}BEGIN {print "BEGIN"} END{print "END"}'
  • 作用:在处理之前打印 "BEGIN",逐行累加文件大小并打印当前总大小,最后打印 "END"。
  • 解释:BEGIN {print "BEGIN"} 在开始处理前打印 "BEGIN",NR>1{total=total+$5;print total;} 从第二行开始处理,每行将文件大小累加到 total 并打印当前的 totalEND{print "END"} 在处理完所有行后打印 "END"。
  1. ls -l | awk -F "="'NR>1{total=total+$5;print total;}BEGIN {print "BEGIN"} END{print "END"}'
  • 作用:类似于第 4 条指令,但使用 "=" 作为字段分隔符。
  • 解释:由于 -F "=" 指定了字段分隔符为 "=",但 ls -l 的输出中并没有 "=",因此字段分隔符的更改对结果没有影响。BEGIN {print "BEGIN"}NR>1{total=total+$5;print total;}END{print "END"} 的功能与第 4 条指令相同。
  1. ls -l | awk -F "[=']"'NR>1{total=total+$5;print total;}BEGIN {print "BEGIN"} END{print "END"}'
  • 作用:类似于第 4 条指令,但使用正则表达式 [='] 作为字段分隔符。

  • 解释:-F "[=']" 指定字段分隔符为 "=" 或 "'",由于 ls -l 的输出中也没有这些符号,字段分隔符的更改对结果同样没有影响。BEGIN {print "BEGIN"}NR>1{total=total+$5;print total;}END{print "END"} 的功能与第 4 条指令相同。

    总结来说,这些命令主要是利用 awk 对 ls -l 的输出进行文件大小的处理和统计,区别在于是否初始化和打印一些附加信息,以及字段分隔符的设置。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容