Skip to content

Instantly share code, notes, and snippets.

@jjarmoc
Created January 6, 2012 17:21
Show Gist options
  • Star 12 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save jjarmoc/1571540 to your computer and use it in GitHub Desktop.
Save jjarmoc/1571540 to your computer and use it in GitHub Desktop.
Quoted Printable encode/decode bash aliases - suitable for pipelining
# To decode:
# qp -d string
# To encode:
# qp string
alias qpd='perl -MMIME::QuotedPrint -pe '\''$_=MIME::QuotedPrint::decode($_);'\'''
alias qpe='perl -MMIME::QuotedPrint -pe '\''$_=MIME::QuotedPrint::encode($_);'\'''
function qp {
if [[ "$1" = "-d" ]]
then
echo ${@:2} | qpd
else
echo ${@} | qpe
fi
}
@klepsydra
Copy link

Don't forget to "shopt -s expand_aliases" if you plan to use these aliases in bash scripts

@jjarmoc
Copy link
Author

jjarmoc commented May 1, 2012

Good call, thanks! I tend to use them mostly in one liners so I can pipeline to other tools easily, but that's a good point worth noting.

@Hubro
Copy link

Hubro commented Apr 27, 2018

Alternatively, use Python's quopri module:

$ echo "Jeg liker å sykle" | python -m quopri
Jeg liker =C3=A5 sykle

$ echo "Jeg liker =C3=A5 sykle" | python -m quopri -d
Jeg liker å sykle

@AloisMahdal
Copy link

@Hubro: this should be the accepted answer!

(oh wait, I'm not on stackoverflow?)

@eiro
Copy link

eiro commented Apr 26, 2019

the perl version can be much simple:

qp () {
    perl -MMIME::QuotedPrint -s -ne '
        BEGIN { *e = $d ? \&decode_qp : \&encode_qp }
        print e $_
    ' -- "$@"
}

qp /etc/hostname - /etc/hostname <<< ∀✓ | qp -d

@l0b0
Copy link

l0b0 commented Jul 4, 2023

qprint --decode and qprint --encode are easy to use.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment