在linux中用tcl语言写一个脚本,内容是找到两个文件中macro相同的行,然后写入一个新的文件中
时间: 2024-03-08 12:47:58 浏览: 26
可以尝试以下脚本:
```tcl
set file1 [open "file1.txt" r]
set file2 [open "file2.txt" r]
set outfile [open "output.txt" w]
set macro1 [split [read $file1] "\n"]
set macro2 [split [read $file2] "\n"]
foreach line1 $macro1 {
foreach line2 $macro2 {
if {$line1 == $line2} {
puts $outfile $line1
}
}
}
close $file1
close $file2
close $outfile
```
这个脚本会打开两个文件和一个输出文件,然后把文件中的每一行按照换行符分割成字符串列表。接着,它会使用两个嵌套的循环,遍历所有的行,比较它们是否相等。如果找到了相同的行,就把它写入输出文件中。最后,关闭所有的文件句柄。
相关问题
在linux中用tcl语言写一个脚本,内容是找到文件1和文件2中相同的带有MACRO 文字和END 文字的行
可以使用以下脚本实现:
```tcl
#!/usr/bin/tclsh
set file1 [open "file1.txt" r]
set file2 [open "file2.txt" r]
while {[gets $file1 line1] != -1} {
if {[regexp {MACRO.*END} $line1]} {
seek $file2 0
while {[gets $file2 line2] != -1} {
if {[regexp {MACRO.*END} $line2]} {
if {$line1 == $line2} {
puts $line1
}
}
}
}
}
close $file1
close $file2
```
其中,`file1.txt`和`file2.txt`是需要比较的两个文件。该脚本会逐行读取`file1.txt`中的内容,如果该行包含`MACRO`和`END`,则会在`file2.txt`中查找相同的行。如果找到相同的行,则会输出该行内容。最后关闭文件句柄。
在linux中用tcl语言写一个脚本,内容是找到文件1和文件2中相同的带有MACRO 文字和END 文字的行,然后将这些行写入一个新的文件中
可以使用以下脚本实现:
```tcl
#!/usr/bin/tclsh
# 打开文件1和文件2
set file1 [open "file1.txt" r]
set file2 [open "file2.txt" r]
# 创建新文件用于存储相同的行
set outputFile [open "output.txt" w]
# 读取文件1的所有行
set lines1 [split [read $file1] "\n"]
# 遍历文件1的每一行,查找相同的行
foreach line1 $lines1 {
# 如果当前行不包含MACRO和END,则跳过
if {[string first "MACRO" $line1] == -1 || [string first "END" $line1] == -1} {
continue
}
# 读取文件2的所有行
set lines2 [split [read $file2] "\n"]
# 遍历文件2的每一行,查找相同的行
foreach line2 $lines2 {
# 如果当前行不包含MACRO和END,则跳过
if {[string first "MACRO" $line2] == -1 || [string first "END" $line2] == -1} {
continue
}
# 如果当前行和文件1的行相同,则写入新文件中
if {$line1 eq $line2} {
puts $outputFile $line1
}
}
# 重置文件2的指针,准备查找下一行
seek $file2 0
}
# 关闭所有文件
close $file1
close $file2
close $outputFile
```
你可以将文件1和文件2的路径修改为实际的路径,然后运行该脚本即可。它将在当前目录下创建一个名为`output.txt`的新文件,并将相同的行写入其中。