##########
定期的にさまざまな形式(、など)の電話番号###-###-####
を含むテキストファイルを受け取ります。(###) ###-###
通常10桁ですが、そんなことも見たことがあります+1 (###) ###-####
。
結局のところ、ファイルはデータベースにインポートされましたが、詳細には説明しないため、電話番号は標準形式で指定されました(###) ###-####
。
変更されない唯一のことは、電話番号が常に各行の2番目と3番目のタブ文字の間にあることです。
コマンドラインでこれを行う方法はありますか?
ベストアンサー1
文書が説明通りの場合、この内容も適用されます。このコマンドは電話番号の前後の情報を保存し、必要な方法でフォーマットします。出力が良く見える場合は、その場所で編集する-i
オプションを追加するか、最後に使用して出力リダイレクトを提供してください。sed
> output_file
sed -E "s/(.*\t.*\t)\+?1?[[:space:]]?\(?([0-9]{3})\)?.*([0-9]{3}).*([0-9]{4})(.*)/\1\(\2\)\ \3-\4\5/g" filename
次のテキストを含むファイルでテストしました。
jfk 902-765-9292 hat jump cat
jk 902 819 2244 hat jump cat
98 902 823-4456 hat jump cat
78h +1 075 242 1566 hat jump cat
jklj kjlj +1 075-242-1566 hat jump cat
jk jkj +1 (075) 242-1566 hat jump cat
kj (204) 799-9810 hat jump cat
kj 89 (204)-799-9810 hat jump cat
出力は次のとおりです
jfk (902) 765-9292 hat jump cat
jk (902) 819-2244 hat jump cat
98 (902) 823-4456 hat jump cat
78h (075) 242-1566 hat jump cat
jklj kjlj (075) 242-1566 hat jump cat
jk jkj (075) 242-1566 hat jump cat
kj (204) 799-9810 hat jump cat
kj 89 (204) 799-9810 hat jump cat