こんにちは、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
短縮印刷(awk
trueと評価される式のデフォルトの動作(現在の行印刷など))を使用して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