※ ChatGPTを利用し、要約された質問です(原文:awkで単語単位での置換)
awkで単語単位での置換方法
このQ&Aのポイント
awkを使って単語単位での置換を行いたい場合、gsub関数を使用します。具体的な方法は、パターンの中に単語の境界を表すワードバウンダリを指定することです。
例えば、'\b置換前の単語\b'というパターンを使用し、置換後の単語を指定します。このようにすることで、単語の一部ではなく、完全一致した単語のみが置換されます。
具体的な例として、ファイルの中から特定の行の特定の単語を置換する場合は、gsub関数を使用して以下のように記述します。
awkを使って単語単位の置換を行いたいのですが、うまく行きません。
awkで単語単位で置換を行うのにはどの様にすれば宜しいのでしょうか?
何方かご存知の方いらっしゃいましたらご教授願います。
具体的にはsedの以下のコマンドと同等の事をawkで行いたいと思っています。
sed 's/\b置換前の単語\b/置換後の単語/g'
例:
・ファイルの内容
hogehoge abcdefg hogehoge
hogehoge bcdef hogehoge
hogehoge bcd hogehoge
hogehoge abcd hogehoge
hogehoge bcd
hogehoge bcdef
bcd hogehoge
上記ファイルをawkで1行ずつ読み込みの3,5,7行目の”bcd”のみ”HIJ”に置き換える事をしたいと考えています。
下記を試してみたのですが、うまく行きませんでした。
1.awk '{gsub(/\bbcd\b/, "HIJ", $0); print $0}'
2.awk '{gsub(/(bcd)/, "HIJ", $0); print $0}'
1だと全く置換されず、2だと3,5,7行目以外も置換されてしまいます。
どの様にしたらうまく行くのでしょうか?
お礼
ご回答ありがとうございます。 うまく行きました。 大変助かりました。