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.