Mit GNU Sed,
md5sum input.txt | sed 's/./x/5g'
Dies überspringt einfach die Ersetzung der 4 ersten Zeichen der Zeichenfolge und führt die Ersetzung für alle anderen Zeichen durch.
Eine POSIX-Alternative mit Awk (obwohl es wahrscheinlich etwas Einfacheres gibt),
md5sum xad | awk '{
four=substr($0, 1, 4)
rest=substr($0, 5)
gsub(/./, "x", rest)
print four, rest
}' OFS=""
POSIXly (glaube ich) könnten Sie eine sed-Schleife verwenden, um wiederholt den ersten Nicht-x
zu ersetzen Zeichen nach dem 4-stelligen Präfix:
$ md5sum input.txt | sed '
:a
s/^\(....x*\)[^x]/\1x/
ta
'
Ersetzen Sie [^x]
mit [^x ]
wenn Sie die Substitution nur im ersten Feld (der Prüfsumme) vornehmen möchten.
Mit perl
wenn GNU sed
ist nicht verfügbar:
md5sum input.txt | perl -pe 's/^.{4}(*SKIP)(*F)|./x/g'
^.{4}(*SKIP)(*F)
verhindert das Ersetzen der ersten vier Zeichen
|.
gibt das alternative Muster an, das ersetzt werden muss
Um nur die Prüfsumme zu ändern:
md5sum ip.txt | perl -pe 's/(^.{4}|\h.*$)(*SKIP)(*F)|./x/g'
Wenn die md5sum
Die Ausgabe beginnt mit einem \
(z. B. wenn der Dateiname ein Zeilenumbruchzeichen hat), dann können Sie ^\\?.{4}
verwenden statt ^.{4}
um zuzulassen, dass die ersten fünf Zeichen unmaskiert bleiben.