こんにちは、gsubを使用して括弧のあるWordを置き換えるにはどうすればよいですか。
ここでABC(T)をABC/Gに置き換えたい
awk ' {gsub("ABC\(T\)","ABC/G")}; Print $0' "$FILENAME" > tmp.tmp && mv tmp.tmp "$FILENAME"
gsub
に//
形式を使用すると、全体を単純化できます。
$ echo "ABC(T)" | awk '{gsub(/ABC\(T\)/,"ABC/G")}; print $0'
ABC/G
次に、引数なしでprint
(print $0
と同じ)または印刷用の1
省略形(デフォルトのawk
アクション)を使用して、さらに単純化できます。 1;
など、trueと評価される式は、現在の行を出力します):
$ 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つの\
だけです。これは、セットの1つがBASHを通過するテキスト自体用であり、もう1つがawkによって解析されている実際の\
であるためです。これは私にとってはうまくいくようです:
echo 'ABC(T)' | awk ' {gsub("ABC\\(T\\)","ABC/G")}; Print $0' "$FILENAME"
そして与える:
ABC/G