本帖最后由 pcl_test 于 2016-7-15 12:46 编辑
在Linux下有一個命令名 `tac' , 它把文件反過來打印,即把文件由最後一列先打印,最前一列變成最後一列, 如- nc10@your-5554c55be4 ~
- $ for i in {1..5};do echo $i ;done > mytest.txt
-
- nc10@your-5554c55be4 ~
- $ cat mytest.txt
- 1
- 2
- 3
- 4
- 5
-
- nc10@your-5554c55be4 ~
- $ tac mytest.txt
- 5
- 4
- 3
- 2
- 1
复制代码 如果是其它Unix, 沒有這命令,也可用其它方法達成,如- nc10@your-5554c55be4 ~
- $ nl mytest.txt | sort -nr | cut -f2-
- 5
- 4
- 3
- 2
- 1
复制代码 或者用上 gawk, perl- nc10@your-5554c55be4 ~
- $ gawk '{s[NR]=$0;next}END{for(t=NR;t>=0;t--)print s[t]}' mytest.txt
- 5
- 4
- 3
- 2
- 1
-
- nc10@your-5554c55be4 ~
- $ perl -e 'print reverse<>' mytest.txt
- 5
- 4
- 3
- 2
- 1
复制代码 甚至用bash 寫一個- nc10@your-5554c55be4 ~
- $ cat tac.bsh
- #! /bin/bash
- IFS='
- '
- mytac(){
- local file rev element
- file=$1
- rev=($(<$file))
- element=${#rev[@]}
-
- for ((i=$((element - 1)); i>=0; i--))
- do
- echo ${rev[$i]}
- done
- }
-
- mytac "$1"
-
- nc10@your-5554c55be4 ~
- $ ./tac.bsh mytest.txt
- 5
- 4
- 3
- 2
- 1
复制代码 請教各位大俠,如用批次檔怎樣寫出來?是否可以達成?謝謝 |