2014-10-27 51 views
0

我怎麼能替換文本文件中的特定行的Tcl例如:我如何替換文本文件中的行?

a.txt包含:

John 
Elton 

,我需要更換內容b.txt包含:

John 
Belushi 

在Bash中,我知道我可以使用:sed '2s/.*/Belushi/' a.txt > b.txt。但它不起作用。

回答

1

可以有很多種方法。如果你想使用相同的sed命令,你可以很好地與exec命令

#!/usr/bin/tclsh 
exec sed {2s/.*/Belushi/} a.txt > b.txt 

爲什麼我們用括號,而不是單引號括起來的原因是防止任何換人做。

1

做更換的純Tcl的方式是這樣的:

# Read the lines into a Tcl list 
set f [open "a.txt"] 
set lines [split [read $f] "\n"] 
close $f 

# Do the replacement 
lset lines 1 "Belushi" 

# Write the lines back out 
set f [open "b.txt" w] 
puts -nonewline $f [join $lines "\n"] 
close $f 

的只是隱約有點棘手的是,你需要-nonewline不然你會從puts額外的換行符;我們提供了我們希望它生成的所有新行。