コマンドラインを使用して、Markdown(またはより適切にはPandoc Markdown)の自然言語の単語数を取得する方法はありますか? wc
を使用して非常に大まかな見積もりを取得することは可能ですが、wc
は単純であり、空白で囲まれたものはすべてWordとしてカウントされます。これには、ヘッダーの書式設定、箇条書き、リンク内のURLなどが含まれます。
理想的なのは、すべてのマークダウンフォーマット(可能であればPandocの引用を含む)を削除し、それをwc
に渡すことですが、pandoc
プレーンテキスト出力フォーマットには、まだ多くのマークダウンスタイルが含まれています。
そのための新しいluaフィルターがあります: https://pandoc.org/lua-filters.html#counting-words-in-a-document
次のコードをwordcount.lua
として保存します
-- counts words in a document
words = 0
wordcount = {
Str = function(el)
-- we don't count a Word if it's entirely punctuation:
if el.text:match("%P") then
words = words + 1
end
end,
Code = function(el)
_,n = el.text:gsub("%S+","")
words = words + n
end,
CodeBlock = function(el)
_,n = el.text:gsub("%S+","")
words = words + n
end
}
function Pandoc(el)
-- skip metadata, just count body:
pandoc.walk_block(pandoc.Div(el.blocks), wordcount)
print(words .. " words in body")
os.exit(0)
end
次のようにpandocを呼び出します。
pandoc --lua-filter wordcount.lua myfile.md
やや手動の解決策:
pandoc
を使用して、マークダウンファイルをMS Wordドキュメントに変換します(*.docx
)またはOpenOffice/LibreOffice Writerドキュメント(*.odt
)1 OpenOfficeはおそらく同じように動作しますが、私はそれをテストしていません。
私は同じ課題に直面していました、そして私はそれのために Pythonスクリプト を書きました。特殊文字とMarkdown/HTML要素を削除し、残りの単語をカウントします!