重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

awkで以下のように文字列置換したいのですが、変数strA内で¥マークを使用すると正常に置換してくれません。どのようにエスケープすれば良いのでしょうか?

=================================================
--実行コマンド----------
gawk -f CNV.awk input.txt

--input.txt----------------
いぬ¥ねこ

--CNV.awk----------------
strA="ぬ¥ね";
strB="★";
gsub(strA, strB, $0);
print $0;
=================================================

このとき、「い★こ」という結果を期待しているのですが出力がありません。
また、
strA="ぬ¥¥ね";

strA='ぬ¥ね';
と指定しても同様にダメでした。

どなたか解決策をご存知でしたらご教授宜しくお願い致します。

A 回答 (2件)

strA="ぬ\\\\ね";


代入する時、正規表現、で評価されるようです。

または、
gsub(/ぬ\\ね/, strB, $0);
    • good
    • 0
この回答へのお礼

前者の方法でうまくいきました!
有難うございました!

お礼日時:2011/06/27 17:18

そもそも、awkのスクリプトとして変じゃないですか?


省略可能なパターン {アクション}
の繰り返しのはずなのに、{}が一つもないのですから。少なくとも、こちらでやったらSytax Errorになります。
また、全体を{}で囲めば、「い★こ」という結果になりました。

あとは、awkだと文字コードの変換まではやってくれないと記憶してます。なので、あらかじめ揃えておく必要があるでしょうし、いわゆる「ダメ文字」問題もあるでしょう。


一番の間違いは、ここはRubyカテゴリーだということですけど。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!