在linux中用tcl语言写一个脚本,内容是找到文件1和文件2中相同的带有MACRO 文字和END 文字的行,然后将这些行写入一个新的文件中
时间: 2024-03-08 12:47:16 浏览: 11
可以使用以下脚本实现:
```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`的新文件,并将相同的行写入其中。