ファイル内のすべてのhtmlタグを一覧表示します。

ファイル内のすべてのhtmlタグを一覧表示します。

ファイル内のすべてのHTMLタグを一覧表示する方法があるかどうか疑問に思います。ファイルがあるとしましょう。file.html

<html>
<head>
<title>Test</title>
</head>
<body>
This is a test
</body>
</html>

すべてのタグのリストを取得したいと思います。それは:

<html>
<head>
<title>
</title>
</head>
<body>
</body>
</html>

sedを使ってみましたが、

cat file.html | sed 's/<[^>]*>//g'

ただし、挿入されたすべてのHTMLタグは削除されます。 。 。 。

答え1

Perlのための速いハッキング:

perl -wlne 'print for(/<.*?>/g)' file.html

しかし、真剣な解決策のためには、html / xmlを実際に理解するツールを使用する必要があります。

答え2

実際のHTMLパーサーを使用することはそれほど難しくありません。

perl -MHTML::Parser -E '
  $handler = sub {say "<".shift.">"};
  HTML::Parser->new(start_h => [$handler,"tag"], end_h => [$handler,"tag"])
              ->parse_file(shift @ARGV)
' file.html
<html>
<head>
<title>
</title>
</head>
<body>
</body>
</html>

関連情報