怎样利用脚本语言逆序输出文件
1,654 Views『作者:RickyZhu 转载务必注明出处和作者』
Tag:programming
脚本语言对文本文件的处理非常灵活和方面,今天遇到这样一个问题,如何利用脚本语言(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]$
希望有所启发.
