怎样利用脚本语言逆序输出文件

脚本语言对文本文件的处理非常灵活和方面,今天遇到这样一个问题,如何利用脚本语言(TCL或者Shell)逆序输出一个文件的内容. 比如,有文件file1内容如下:

[autoadm@AUTOTEST-ATS autoadm]$cat fff
1
22
333

4444
55555

666666

[autoadm@AUTOTEST-ATS autoadm]$

要求输出之后,变成:

[autoadm@AUTOTEST-ATS autoadm]$cat eee

666666

55555
4444

333
22
1
[autoadm@AUTOTEST-ATS autoadm]$

下面给出两个解决方案,用Shell的实现方法和用TCL的实现方法,逆序输出他们.

Shell中有一个非常强大的命令,就是把cat反过来写,tac.直接输出就是逆序的.

如下:

[autoadm@AUTOTEST-ATS autoadm]$tac fff

666666

55555
4444

333
22
1
[autoadm@AUTOTEST-ATS autoadm]$

用TCL,就稍嫌麻烦点,如下是用数组的方法做的,如果文件大的时候,可能比较耗内存.

[autoadm@AUTOTEST-ATS autoadm]$cat ricky
#!/usr/local/ActiveTcl/bin/tclsh

set sourceFile [lindex $argv 0]

set handle [open $sourceFile]
set ls “”
while {![eof $handle]} {
lappend ls [gets $handle]
}

for {set i [expr [llength $ls] – 1]} {$i >= 0} {incr i -1} {
puts [lindex $ls $i]

}
[autoadm@AUTOTEST-ATS autoadm]$

希望有所启发.

This entry was posted in 脚本语言. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *