Общая подсказка grep
. Поскольку вы ищете несколько фиксированных строк, а не регулярных выражений, вы можете grep
сказать, что это более эффективный подход (и исправить проблему, связанную с .
как метасимвол, а не точное совпадение):
grep -F -e "$day" -e "$yesterday" /home/new.txt > /home/new_tmp.txt
Или просто сделать все это в чистом tcl вместо того, чтобы задействовать оболочку?
set infile [open /home/new.txt r]
set outfile [open /home/new_tmp.txt w]
while {[gets $infile line] >= 0} {
if {[string first $day $line] >= 0 || [string first $yesterday $line] >= 0} {
puts $outfile $line
}
}
close $infile
close $outfile