📄 mysql_find_rows
字号:
#!/usr/bin/perl$version="1.02";use Getopt::Long;$opt_help=$opt_Information=$opt_skip_use_db=0;$opt_regexp=$opt_dbregexp=".*";$opt_start_row=1; $opt_rows=9999999999;GetOptions("Information","help","regexp=s","start_row=i","rows=i", "dbregexp=s", "skip-use-db") || usage();usage() if ($opt_help || $opt_Information);$query=$search=$database=$set=""; $eoq=0;while (<>){ next if (length($query) == 0 && /^\#/); # Skip comments $query.=search($_); if ($eoq) { if ($query =~ /^use /i || $query =~ /^SET / || ($query =~ /$opt_regexp/o && $database =~ /$opt_dbregexp/o)) { if ($opt_skip_use_db && $query =~ /^use /i) { $query=""; next; } if ($opt_start_row <= 1) { if ($database) { print $database, $set; $database=$set=""; } print $query; last if (--$opt_rows == 0); } else { $opt_start_row--; if ($query =~ /^use /) { $database=$query; $set=""; } elsif ($query =~ /^SET/) { $set=$query; } else { $set=""; } } } $query=""; $search=""; $eoq=0; }}exit 0;sub search{ my($row)=shift; my($i); for ($i=0 ; $i < length($row) ; $i++) { if (length($search)) { if (length($search) > 1) { # Comment next if (substr($row,$i,length($search)) ne $search); $i+=length($search)-1; $search=""; } elsif (substr($row,$i,1) eq '\\') # Escaped char in string { $i++; } elsif (substr($row,$i,1) eq $search) { if (substr($row,$i+1,1) eq $search) # Double " or ' { $i++; } else { $search=""; } } next; } if (substr($row,$i,2) eq '/*') # Comment { $search="*/"; $i++; } elsif (substr($row,$i,1) eq "'" || substr($row,$i,1) eq '"') { $search=substr($row,$i,1); } } $eoq=1 if (!length($search) && $row =~ /;\s*$/); return $row;}sub usage{ print <<EOF;$0 Ver $versionTCX Datakonsult AB, by Monty.This software comes with NO WARRANTY: see the file PUBLIC for details.Prints all SQL queries that matches a regexp or contains a 'usedatabase' or 'set ..' command to stdout. A SQL query may containnewlines. This is useful to find things in a MySQL update log.$0 takes the following options:--help or --Information Shows this help--regexp=# Print queries that matches this.--start_row=# Start output from this row (first row = 1)--skip-use-db Don\'t include \'use database\' commands in the output.--rows=# Quit after this many rows.Example:$0 --regexp "problem_table" < update.log$0 --regexp "problem_table" update-log.1 update-log.2EOF exit(0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -