awkでgsubを使用して単語を角括弧に置き換える

awkでgsubを使用して単語を角括弧に置き換える

こんにちは、gsubを使用して括弧内の単語を置き換える方法です。

ここではABC(T)をABC/Gに変えたいです。

awk ' {gsub("ABC\(T\)","ABC/G")}; Print $0' "$FILENAME" > tmp.tmp && mv tmp.tmp "$FILENAME"

答え1

//次の形式を使用すると、すべてを簡素化できますgsub

$ echo "ABC(T)" | awk '{gsub(/ABC\(T\)/,"ABC/G")}; print $0'
ABC/G

printその後、引数なし(と同じprint $0)または1短縮印刷(awktrueと評価される式のデフォルトの動作(現在の行印刷など))を使用して1;さらに簡素化できます。

$ echo "ABC(T)" | awk '{gsub(/ABC\(T\)/,"ABC/G")}1'
ABC/G

しかし、個人的に私はawkこのツールを使用しません。他のツールには短くて明確な構文があります。

$ echo "ABC(T)" | sed 's|ABC(T)|ABC/G|'
ABC/G

$ echo "ABC(T)" | perl -pe 's|ABC\(T\)|ABC/G|'
ABC/G

答え2

あなたは非常に近いです。 2つだけ必要です\。これは、コレクションの1つがBASHを介したテキスト自体であり、他のコレクションが\awkによって解析される実際のテキストであるためです。これは私にとって効果的なようです。

echo 'ABC(T)' | awk ' {gsub("ABC\\(T\\)","ABC/G")}; Print $0' "$FILENAME"

そして以下を提供します:

ABC/G

関連情報