- 締切済み
sedコマンドを使用して、文字の置換を行いのですが助けてください。
sedコマンドを使用して、文字の置換を行いのですが助けてください。 sedコマンドやawkコマンドなどを使って、aliasesファイルの置換を行いたいのですが、 うまくいかないので教えていただけないでしょうか? 知りたいのは、次のような置換を一括で行うことのできるコマンドです。 ■置換前のファイル ================= AAAA: :include:/file/name BBBB: :include:/file/name CCCC: :include:/file/name ================= ■置換後のファイル(希望する置換結果) ※1フィールド目の任意の文字列をメールアドレスのローカルパートとして利用したい ================= AAAA: AAAA@example.com BBBB: BBBB@example.com CCCC: CCCC@example.com ================= 以上です。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- cynthia4
- ベストアンサー率51% (186/358)
知恵袋に同じ質問をされていますが。 一概に否定はしないのですが 大部分の人は、片方がおろそかになっています。 貴方も御多分に漏れず、そうなっています。 知恵袋では、回答後すぐに返事を出していますが こちらは、音沙汰無しです。 マナーや節操の無い事は止めて下さい。
- Tacosan
- ベストアンサー率23% (3656/15482)
「うまくいかない」とは, どのようにしたら何がどう「うまくいかない」のでしょうか? それを書いた方が早いかもしれませんよ. sed なら s/^([^:]*):.*/\1: \1@example.com/ のような感じかな. ああ, 正規表現はものによって違うことがあるのでその辺は勝手に直すこと.
- shuyamakawa
- ベストアンサー率67% (111/164)
sコマンドの置換前正規表現において、 メールアドレスの一部として利用したい部分を「\(」「\)」で囲み、 それを置換後文字列上で「\1」で2回引用します。 >cat input.txt AAAA: :include:/file/name BBBB: :include:/file/name CCCC: :include:/file/name >sed -e 's/^\([-_.A-Za-z0-9][-_.A-Za-z0-9]*\).*$/\1: \1@example.com/' input.txt AAAA: AAAA@example.com BBBB: BBBB@example.com CCCC: CCCC@example.com メールアドレスのローカルパートを表す正規表現「[-_.A-Za-z0-9][-_.A-Za-z0-9]*」は、 実際に来る可能性のある文字を網羅するように調整する必要があります。
お礼
ご連絡が遅くなり申し訳ありません。ご教授いただきありがとうございます。とても参考になりました。
- notnot
- ベストアンサー率47% (4900/10358)
awkが良いでしょうね。 コメント行などはそのまま残すとして、 awk -F: '/^[a-z]/{print $1 ":" $1 "@example.com";next}{print}'
お礼
ご連絡が遅くなり申し訳ありません。ご教授いただきありがとうございます。とても参考になりました。
お礼
ご連絡が遅くなり申し訳ありません。ご教授いただきありがとうございます。とても参考になりました。