1

csvファイルがあり、すべてのメールに.example.comを追加したいと思います。結果はfoo@bar.com.example.comになります。ターミナルからsedコマンドを使用してこれを実行したいのですが、正しい構文がわかりません。例:

email1@foo.bar;name1;surname1
email3@foo.bar;name2;surname2
email3@foo.bar;name3;surname3

になるはずです

email1@foo.bar.example.com;name1;surname1
email3@foo.bar.example.com;name2;surname2
email3@foo.bar.example.com;name3;surname3

sed -i "" -e 's/\(@[A-Z0-9.-]+\.[A-Z]{2,4}\)/\1.example.com/g'file.csvで試しましたが、機能しません

4

4 に答える 4

1

タグに気づきました。これは、 BSDsedを使用していることを意味します。-E作品を作るには旗が必要です+

$ cat > file

email1@foo.bar;name1;surname1
email3@foo.bar;name2;surname2
email3@foo.bar;name3;surname3

$ sed -E 's/(@[a-zA-Z0-9.-]+)/\1.example.com/' file

email1@foo.bar.example.com;name1;surname1
email3@foo.bar.example.com;name2;surname2
email3@foo.bar.example.com;name3;surname3

デフォルトでは大文字と小文字が区別されるa-zため、文字クラスもチェックする必要があります。A-Z

参照:mac os x(BSD)sedでプラス記号をエスケープする方法は?

于 2013-01-19T14:34:33.030 に答える
1

最初のセミコロンの前にテキストを挿入するだけです。

sed 's/;/.example.com;/'
于 2013-01-19T16:18:09.320 に答える
0

解決策が見つかったと思います:sed -i ".bkp" -E "s /(@ [a-zA-Z0-9 .-] +)/&。example.com/g" file.csv

于 2013-01-19T14:40:37.923 に答える
0

これを試して

sed -re 's/(\w+@\w+.\w+)/\11.example.com/g' temp.txt

于 2013-01-20T06:43:06.217 に答える