#!/bin/sh in_file=${1-/dev/stdin} out_file=${2-${1-/dev/stdout}} tmp_file=/tmp/lirc_$$ tr_file=/usr/share/lirc/keymap_translations codes=false while read line; do if [ -z "${line###*}" ]; then true elif [ -z "${line##*begin codes}" ]; then codes=true elif [ -z "${line##*end codes}" ]; then codes=false elif $codes; then code=${line%% *} newcode=$(grep -i " $code\( \|$\)" $tr_file) newcode=${newcode%% *} newcode=${newcode:-$code} line=" $newcode ${line#* }" fi echo "$line" done <$in_file >$tmp_file cat $tmp_file >$out_file dos2unix $out_file rm $tmp_file