最初の4文字を除くすべての文字を置き換える

最初の4文字を除くすべての文字を置き換える

次のようにsedにコマンドを入力したいと思います。

md5sum input.txt | sed 's/^\(....\).*/\1/;q'

これはチェックサムの最初の4文字だけを出力することによって行われます。しかし、最初の4文字を出力したいのですが、他のすべての文字(編集情報)の代わりにxを使用したいと思います。私は今とても迷っています。

ベストアンサー1

GNU Sedを使用すると、

md5sum input.txt | sed 's/./x/5g'

これは代替文字列の最初の4文字をスキップし、他のすべての文字を置き換えます。

AwkのPOSIXの代替案(より簡単なことがあるかもしれません)

md5sum xad | awk '{
  four=substr($0, 1, 4)
  rest=substr($0, 5)
  gsub(/./, "x", rest)
  print four, rest
}' OFS=""

おすすめ記事