一部の表現を省略するには、SED ヘルプが必要です。

一部の表現を省略するには、SED ヘルプが必要です。
sed -E 's/([0-9]{3})-([0-9]{2})-([0-9]{4})/ /g' a.dat > b.dat

これは 111-11-1111スペースで置き換えられますが、0111-11-1111スペースで置き換えられます...しかし無視したいと思います。0111-11-1111(基本的に3つではなく4つの数字がある場合)

ベストアンサー1

追加のアンカーポイントが必要です。

  1. 行の始まりと終わり(各項目が1行にある場合)

    sed -E 's/^[0-9]{3}-[0-9]{2}-[0-9]{4}$/ /g' file
    
  2. または単語境界(空白からテキストへの変換)(GNU sed):

    sed -E 's/\<[0-9]{3}-[0-9]{2}-[0-9]{4}\>/ /g' file
    
  3. またはキャプチャ(および戻り)任意に選択できる追加の文字。ただし、これを行うには、一致するすべての文字列を追加の文字で囲む必要があります。

    sed -E 's/([^0-9])[0-9]{3}-[0-9]{2}-[0-9]{4}([^0-9])/\1 \2/g' file
    
  4. または、(sed 以外) 順方向および逆方向ルックアップを許可する PCRE を使用します。

    perl -pe '$_ =~ s/(?<!\d)\d{3}-\d{2}-\d{4}(?!\d)/ /g' file
    

おすすめ記事