ファイルのパターンを空白に置き換える必要があります

ファイルのパターンを空白に置き換える必要があります

途中にハイフン/スペースを含む数値を含むファイルがあります。これを空白に置き換える必要があります(例:333-44-5555 / 333 44 5555)。

grep '[0-9]\{3\}-[0-9]\{2\}-[0-9]\{4\}'
grep '[0-9]\{3\} [0-9]\{2\} [0-9]\{4\}'  ==> fetches me with all cases; 

しかし、それを交換する方法。

ベストアンサー1

これはあなたが望むものですか(-EGNU sedやOSX / BSD sedなどのEREサポートオプションでsedを使用)。

sed -E 's/([0-9]{3})-([0-9]{2})-([0-9]{4})/\1 \2 \3/g'

たとえば、

$ echo '333-44-5555' | sed -E 's/([0-9]{3})-([0-9]{2})-([0-9]{4})/\1 \2 \3/g'
333 44 5555

-テキストにスペースに変換したくない他のコンテンツがあるとします。それ以外の場合は、tr '-' ' ' < file単純な内容だけで済みます。


以下のコメントに基づいて編集すると、これが本当に欲しいようです。

sed -E 's/[0-9]{3}[- ][0-9]{2}[- ][0-9]{4}/ /g'

おすすめ記事