LinuxCommandLibrary
GitHubF-DroidGoogle Play Store

mq

A jq-like command-line tool for querying and transforming Markdown files

TLDR

Extract all headings from a Markdown file
$ mq '.h' [path/to/file.md]
copy
Select a specific section by heading text
$ mq 'select("Section Name")' [path/to/file.md]
copy
Extract code blocks of a specific language
$ mq '.code("python")' [path/to/file.md]
copy
Convert Markdown to plain text
$ mq 'to_text' [path/to/file.md]
copy
Output as HTML
$ mq -F html '.h1' [path/to/file.md]
copy
Launch interactive REPL mode
$ mq repl [path/to/file.md]
copy
Load query from a file
$ mq -f [query.mq] [path/to/file.md]
copy
Aggregate multiple files into a single array
$ mq -A '.h1' [*.md]
copy

SYNOPSIS

mq [options] [query] [files...]mq repl [file]mq fmt [options] [file]

DESCRIPTION

mq is a command-line tool for processing and querying Markdown files, inspired by jq for JSON. It lets you slice, filter, map, and transform structured Markdown content directly from the terminal with built-in selectors (`.h1`-`.h6`, `.code`, `.link`, `.image`, `..` for recursive descent), functions (`select()`, `contains()`, `totext()`, `tolink()`), and support for custom extensions.Useful for preparing structured prompts for language models, automating documentation updates, and analyzing content across multiple Markdown files. Extensible via custom subcommands placed in `~/.mq/bin/`.

PARAMETERS

-A, --aggregate

Combine all input files into a single array for processing.
-f file, --from-file file
Load the query filter from a file instead of a command-line argument.
-I format, --input-format format
Set input format: markdown, mdx, html, text, null, or raw.
-F format, --output-format format
Set output format: markdown, html, text, json, or none.
-U, --update
Update input files in-place with the query result.
-o file, --output file
Write output to the specified file.
-C, --color-output
Colorize Markdown output.
-S query, --separator query
Query to insert between files when processing multiple inputs.
-L dir, --directory dir
Search path for modules.
-M modules, --module-names modules
Load specific modules (json, csv, yaml, toml, xml).

INSTALL

brew install mq
copy

CAVEATS

Queries follow mq's own filter syntax similar to jq. Complex transformations may require chaining multiple filters with the pipe (`|`) operator.

HISTORY

mq was created by harehare and is written in Rust.

SEE ALSO

jq(1), glow(1)

Copied to clipboard
Kai