#hostname:port:database:username:password localhost:5432:postgres:postgres:postgres 192.168.4.0:1234:foo:bar:baz #some interesting comment host with \: semicolons in it? what?:*:*:*:well yes, that is possible, the \:password\: can contain those as well \::\::\::\::\: ::wrong amount of entries is skipped ::::::::::: you can escape an escape too\: see \\\\:*:*:*:yes it is possible other escapes like \n or \? :*:*:*:are just parsed as-is a trailing escape character:*:*:*:is treated as a regular slash\ passwords should preserve leading space:*:*:*: pass \\\::*:*:*:\\\: #example.com:443:foo:bar:baz \:\:1:*:database_name:user_that_has_no_password: *:*:*:*:fallback_password order_matters:1234:this:will_still_match_the_fallback_password:not_this_one