hyperv 发表于 2018-8-26 09:36:17

Linux Shell编程实战---以逆序形式打印行

  以逆序形式打印行
  
  使用awk或tac可以搞定。
  tac这个命令的名称其实就是反过来书写的cat。
  (1)、使用tac
  该命令的语法如下:
  tac file1file2 …
  它也可以从stdin中读取:
  $ seq 5 |tac
  5
  4
  3
  2
  1
  在tac中,\n是默认的行分隔符。但我们也可以用 -s "分隔符"选项指定自己的分隔符。
  
  (2)、使用awk
  使用awk的实现方式如下:
  $ seq 9 |\
  awk '{lifo=$0 }
  END{for(lno=NR;lno>-1;lno--){ print lifo; }
  }'
  在shell脚本中,\ 可以很方便地将单行命令拆解成多行。
  这个awk脚本非常简单。我们将每一行都存入一个关联数组中,用行号作为数组索引(行号由NR给出),最后由awk执行END语句块。为了得到最后一行的行号,在{ }语句块中使用lno=NR。因此,这个脚本从最后一行一直迭代到第0行,将存储在数组中的各行以逆序方式打印出来。

页: [1]
查看完整版本: Linux Shell编程实战---以逆序形式打印行