sedを使用して数字を文字に置き換える方法

sedを使用して数字を文字に置き換える方法

次の行を含むテキストファイルがあります。

Maynard G. Krebs , ss #111−22−3333, the goofy but lovable beatnik in The Many
Loves of Dobie Gillis. None of the show's episodes ever specified Gilligan's

#111-22-3333sedを使用して数字をに置き換えるにはxxx-xx-xxxx

私のsedスクリプトの内容は次のとおりです。 s/([0-9]{3}-[0-9]{2}-[0-9]{4})/xxx-xx-xxxx/g
私は実行します。sed -f redact.sed redact.txt

答え1

  • 角かっこを削除します。それ以外の場合、Sedはファイル内の角かっこを一致させようとします。

  • {n}拡張正規表現の一部です。 Sedにフラグを付け-Eて有効にするか(sed -Ef redact.sed redact.txt)、各中括弧をエスケープします。

  • ファイルには一種のダッシュ(0xE28892)が含まれています。これは以前の0x2D ASCIIではない-ため、これをSed式にも入力する必要があります。

    sed 's/[0-9]\{3\}−[0-9]\{2\}−[0-9]\{4\}/xxx-xx-xxxx/g'
    sed -E 's/[0-9]{3}−[0-9]{2}−[0-9]{4}/xxx-xx-xxxx/g'
    

関連情報