Dengan GNU Sed,
md5sum input.txt | sed 's/./x/5g'
Ini hanya melewatkan penggantian 4 karakter pertama dari string dan melakukan penggantian untuk semua karakter lainnya.
Alternatif POSIX dengan Awk (walaupun mungkin ada yang lebih sederhana),
md5sum xad | awk '{
four=substr($0, 1, 4)
rest=substr($0, 5)
gsub(/./, "x", rest)
print four, rest
}' OFS=""
POSIXly (menurut saya), Anda dapat menggunakan sed loop untuk berulang kali mengganti non-x pertama karakter mengikuti awalan 4 karakter:
$ md5sum input.txt | sed '
:a
s/^\(....x*\)[^x]/\1x/
ta
'
Ganti [^x] dengan [^x ] jika Anda hanya ingin melakukan substitusi di kolom pertama (checksum).
Dengan perl jika GNU sed tidak tersedia:
md5sum input.txt | perl -pe 's/^.{4}(*SKIP)(*F)|./x/g'
^.{4}(*SKIP)(*F) akan mencegah penggantian empat karakter pertama
|. menentukan pola alternatif yang harus diganti
Untuk mengubah checksum saja:
md5sum ip.txt | perl -pe 's/(^.{4}|\h.*$)(*SKIP)(*F)|./x/g'
Jika md5sum keluaran dimulai dengan \ (misalnya:jika nama file memiliki karakter baris baru), maka Anda dapat menggunakan ^\\?.{4} bukannya ^.{4} untuk mengizinkan lima karakter pertama dibiarkan terbuka kedoknya.