On multisite, wp user delete only removes the user from the current site. Include --network to also remove the user from the database, but make sure to reassign their posts prior to deleting the user.
# Delete user 123 and reassign posts to user 567
$ wp user delete 123 --reassign=567
Success: Removed user 123 from https://example.com.
# Delete all contributors and reassign their posts to user 2
$ wp user delete $(wp user list --role=contributor --field=ID) --reassign=2
Success: Removed user 813 from https://example.com.
Success: Removed user 578 from https://example.com.
# Delete all contributors in batches of 100 (avoid error: argument list too long: wp)
$ wp user delete $(wp user list --role=contributor --field=ID | head -n 100)
Perform operation against a remote server over SSH (or a container using scheme of “docker”, “docker-compose”, “docker-compose-run”, “vagrant”).
--http=<http>
Perform operation against a remote WordPress installation over HTTP.
--user=<id\|login\|email>
Set the WordPress user.
--skip-plugins[=<plugins>]
Skip loading all plugins, or a comma-separated list of plugins. Note: mu-plugins are still loaded.
--skip-themes[=<themes>]
Skip loading all themes, or a comma-separated list of themes.
--skip-packages
Skip loading all installed packages.
--require=<path>
Load PHP file before running the command (may be used more than once).
--exec=<php-code>
Execute PHP code before running the command (may be used more than once).
--context=<context>
Load WordPress in a given context.
--[no-]color
Whether to colorize the output.
--debug[=<group>]
Show all PHP errors and add verbosity to WP-CLI output. Built-in groups include: bootstrap, commandfactory, and help.
--prompt[=<assoc>]
Prompt the user to enter values for all command arguments, or a subset specified as comma-separated values.
--quiet
Suppress informational messages.
Command documentation is regenerated at every release. To add or update an example, please submit a pull request against the corresponding part of the codebase.