如果ruby可用,您可以执行以下操作
ruby -e 'puts readlines.join[/(?<=<tr>).+(?=<\/tr>)/m].gsub(/<\/?tr>/, "")' file
file您输入的html文件在哪里。该命令执行一个Ruby单一代码行。首先,它从中读取所有行file并将它们连接到字符串readlines.join。然后,它从字符串中选择介于(但不包括)之间的任何字符,<tr>并且<\/tr>该字符是一个字符或更长,而与换行符无关[/(?<=<tr>).+(?=<\/tr>)/m]。然后,它从字符串中删除任何字符串<tr>或</tr>字符串gsub(/<\/?tr>/, "")(这对于处理嵌套tr标签是必需的)。最后,它输出字符串puts。
您说过不应该为您使用html解析器,但是将Nokogiri与之一起使用非常容易,ruby并且使命令更简单。
ruby -rnokogiri -e 'puts Nokogiri::HTML(readlines.join).xpath("//tr").map { |e| e.content }' file
-rnokogiri加载Nokogiri。Nokogiri::HTML(readlines.join)读取的所有行file。xpath("//tr")选择每个tr元素并map { |e| e.content }选择每个元素的内容,即<tr>和之间的内容</tr>。
'/<tr/{p=1}; p; /<\/tr>/{p=0}'。如果不起作用,请张贴一些示例输入和预期输出。